Force protobuf-net para ignorar las interfaces IEnumerable / ICollection
¿Cómo puedo obtener v2 de protobuf-net para ignorar el hecho de que mi clase implementa ICollection, IEnumerable, etc.?
Para este escenario particular, solo quiero que los campos que he marcado como [ProtoMember] se serialicen.
Actualmente estoy en el proceso de convertir de usar protobuf-net v1 a usar v2. Tengo una estructura particular que ahora se serializa incorrectamente debido al cambio. Se parece a lo siguiente:
[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; }
}
}
La clase FileTree se escribió para contraer rutas de archivos como "C: \ happy.txt" "C: \ history.txt" en algo más como
"C:\h"
└─── "appy.txt"
└─── "istory.txt"
La estructura elimina la redundancia en las cadenas de ruta. Entonces, realmente no quiero que la clase FileTree se serialice a través de las funciones IEnumerable porque luego se almacena como "C: \ happy.txt", "C: \ history.txt", etc. En este momento, en la serialización de un objeto FileTree, cada ruta se imprime por completo.
EDITAR Una última cosa que debo mencionar: tengo una función On_Deserialization en FileTree que está etiquetada con [ProtoAfterDeserialization]. Puse un punto de interrupción en la función, pero no está siendo golpeado. ¿Está esto relacionado con la forma en que esta clase se está serializando?