如何让 protobuf-net v2 忽略我的类实现 ICollection、IEnumerable 等的事实?
对于这个特定场景,我只希望序列化标记为 [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; }
}
}
FileTree 类的编写是为了将“C:\happy.txt”、“C:\history.txt”等文件路径折叠成类似的内容
"C:\h"
└─── "appy.txt"
└─── "istory.txt"
该结构消除了路径字符串中的冗余。所以,我真的不希望通过 IEnumerable 函数序列化 FileTree 类,因为那样它只会存储为“C:\happy.txt”、“C:\history.txt”等。现在,在序列化中对于 FileTree 对象,每个路径都会完整打印出来。
EDIT:我应该提到的最后一件事——我在 FileTree 中有一个 On_Deserialization 函数,它标有 [ProtoAfterDeserialization]。我在函数中放置了一个断点,但它没有被击中。这与该类的序列化方式有关吗?