노드에 자식 포인터와 부모 포인터가 모두있는 트리 구조가 있습니다. 이 문제는 구성에 사용되므로 작업/구성 관리자에게 다소 읽기 쉽도록해야합니다. 직렬화 규칙과 특성을 여러 가지 조합으로 실험 한 후에도 여전히 문제가 있습니다.부모 및 자식 포인터가있는 트리를 Raven에 저장
내 유형은 다음과 같이 : 이것은 분명히 최종 사용자에게 혼란을
"$id": "3",
"_children": {
"ConfigurationItem": {
"$id": "4",
"_children": {},
"_parent": {
"$ref": "3"
},
"_value": "Some value"
}
},
, 그들은 :
public class NestedConfigurationTree<T> where T : class
{
public InternalNode<T> _root { get; set; }
public class InternalNode<TValue> where TValue : class
{
public Dictionary<string, InternalNode<TValue>> _children { get; set; }
public InternalNode<TValue> _parent { get; set; }
public TValue _value { get; set; }
}
}
내가 순환 참조 ([JsonObject(IsReference = true)]
)을 허용하면, 각 노드는 JSON이처럼 보이는 얻는다 $ id 및 _parent 항목을 원하지 않습니다. 부모는 문서 구조에서 아주 분명하기 때문에 직렬화를 피하고로드 할 때 어떻게 든 다시 만들 수 있습니까?
또한 공개 속성을 피할 수 있습니까? 원래는 private readonly
필드로 썼지 만, 이로 인해 시리얼 라이저가 모든 필드를 무시하게되었습니다.
왜 최종 사용자는 원시 JSON을보고 있습니까? –
@AyendeRahien : 구성 관리 도구 용이며 원시 데이터를 "데이터베이스 관리 도구에서 쉽게 편집 할 수 있어야"하는 요구 사항입니다. 기본적으로 도구가 손상되면 데이터베이스에 들어가서 설정을 변경할 수 있기를 원합니다. – carlpett