如何讓protobuf-net的v2忽略我的類實現ICollection,IEnumerable等事實?強制protobuf-net忽略IEnumerable/ICollection接口
對於這個特定場景,我只希望標記爲[ProtoMember]的字段被序列化。
我目前正在使用protobuf-net v1轉換爲使用v2。我有一個特殊的結構,現在由於更改而錯誤地序列化。它看起來像下面這樣:
[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; }
}
}
的文件樹類寫倒塌像文件路徑 「C:\ happy.txt」 「C:\ history.txt」 到更多的東西一樣
"C:\h"
└─── "appy.txt"
└─── "istory.txt"
該結構消除了路徑字符串中的冗餘。所以,我真的不希望FileTree類通過IEnumerable函數被序列化,因爲那麼它只會被存儲爲「C:\ happy.txt」,「C:\ history.txt」等等。現在,在序列化FileTree對象的每個路徑都將全部打印出來。
編輯:最後一件事我應該提到 - 我在文件樹的On_Deserialization功能被標記爲[ProtoAfterDeserialization。我在該函數中放置了一個斷點,但它沒有被擊中。這與這個類被序列化的方式有關嗎?
我不知道*這是v1和v2之間的突破性變化;也許細微的差別在於v1更多地考慮了'IList',或者'IEnumerable '**與**公共'Add'的組合。 –