protobuf-net의 v2에서 내 클래스가 ICollection, IEnumerable 등을 구현한다는 사실을 어떻게 무시할 수 있습니까?protobuf-net이 IEnumerable/ICollection 인터페이스를 무시하도록합니다.
이 시나리오에서는 필자가 [ProtoMember]로 표시된 필드 만 직렬화하도록하고 싶습니다.
현재 protobuf-net v1을 v2로 변환하는 중입니다. 나는 변화로 인해 지금 올바르게 직렬화되지 않는 특별한 구조를 가지고있다. 이 같이 보입니다 다음 더
"C:\h"
└─── "appy.txt"
└─── "istory.txt"
처럼 뭔가 \ history.txt ":": \ happy.txt C ","C
[ProtoContract]
public class FileTree : ICollection<FilePath>, IEnumerable<FilePath>, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged {
private FileTreeNode _Root;
[ProtoMember (1)]
public FileTreeNode Root {
get { return _Root; }
set { _Root = value; }
}
}
FileTree 클래스는 같은 파일 경로를 축소하기 위해 작성되었습니다
구조는 경로 문자열에서 중복을 제거합니다. 그래서 FileTree 클래스가 "C : \ happy.txt", "C : \ history.txt"등으로 저장되기 때문에 IEnumerable 함수를 통해 직렬화되기를 원하지 않습니다. 지금 바로 직렬화에서 FileTree 객체의 경우 각 경로가 전체적으로 인쇄됩니다.
편집 : 내가 언급해야 마지막 한가지 - 나는 [ProtoAfterDeserialization]와 태그가 FileTree에 On_Deserialization 기능을 가지고있다. 함수에 중단 점을 넣었지만 충돌이 없습니다. 이것은이 클래스가 직렬화되는 방식과 관련이 있습니까?
저는 이것이 v1과 v2 사이의 급격한 변화라고 인식하지 못했습니다. 아마 미묘한 차이점은 v1이'IList'또는'IEnumerable '** ** ** public ** Add를 더 많이 찾고 있다는 것입니다. –