Как я могу получить v2 protobuf-net, чтобы игнорировать тот факт, что мой класс реализует 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"
Структура устраняет избыточность в строках пути.Поэтому я действительно не хочу, чтобы класс FileTree сериализовывался с помощью функций IEnumerable, потому что тогда он просто сохраняется как «C: \ happy.txt», «C: \ history.txt» и т. Д. Прямо сейчас, в сериализации.объекта FileTree, каждый путь печатается полностью.
РЕДАКТИРОВАТЬ: Последнее, что я должен упомянуть - у меня есть функция On_Deserialization в FileTree, которая помечена как[ProtoAfterDeserialization].Я поставил точку останова в функции, но она не получила удар.Это связано с тем, как этот класс сериализуется?