Заставить protobuf-net игнорировать интерфейсы IEnumerable / ICollection

Как я могу получить 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]. Я поставил точку останова в функции, но она не получила удар. Это связано с тем, как этот класс сериализуется?

Ответы на вопрос(1)

Ваш ответ на вопрос