Force protobuf-net para ignorar as interfaces IEnumerable / ICollection
Como posso obter a v2 do protobuf-net para ignorar o fato de que minha classe implementa ICollection, IEnumerable, et
Para este cenário específico, quero apenas que os campos que sinalizei como [ProtoMember] sejam serializado
Atualmente, estou no processo de converter o uso do protobuf-net v1 para o uso da v2. Eu tenho uma estrutura específica que agora está serializando incorretamente por causa da alteração. Parece algo como o seguinte:
[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; }
}
}
A classe FileTree foi gravada para recolher caminhos de arquivos como "C: \ happy.txt" "C: \ history.txt" em algo mais como
"C:\h"
└─── "appy.txt"
└─── "istory.txt"
A estrutura elimina a redundância nas cadeias de caminho. Então, eu realmente não quero que a classe FileTree seja serializada por meio das funções IEnumerable, porque ela é armazenada como "C: \ happy.txt", "C: \ history.txt" etc. etc. Agora, na serialização de um objeto FileTree, cada caminho está sendo impresso na íntegra.
EDITAR Uma última coisa que devo mencionar - eu tenho uma função On_Deserialization no FileTree que está marcada com [ProtoAfterDeserialization]. Coloquei um ponto de interrupção na função, mas não está sendo atingido. Isso está relacionado à maneira como esta classe está sendo serializada?