¿Cómo puedo obtener v2 de protobuf-net para ignorar el hecho de que mi clase implementa ICollection, IEnumerable, etc.?Fuerza protobuf-net para ignorar interfaces IEnumerable/ICollection
Para este escenario en particular, solo quiero que se serialicen los campos que he marcado como [ProtoMember].
Actualmente estoy en el proceso de convertir de usar protobuf-net v1 a usar v2. Tengo una estructura particular que ahora se está serializando incorrectamente debido al cambio. Se ve algo como 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 fue escrito para colapsar las rutas de archivos como "C: \ happy.txt" "C: \ history.txt" en algo más parecido
"C:\h"
└─── "appy.txt"
└─── "istory.txt"
La estructura elimina la redundancia en las cadenas de ruta. Por lo tanto, realmente no quiero que la clase FileTree se serialice a través de las funciones de IEnumerable porque solo 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 en su totalidad.
EDIT: Una última cosa que debería mencionar - Tengo una función On_Deserialization en FileTree que está etiquetado con [ProtoAfterDeserialization]. Puse un punto de interrupción en la función, pero no está siendo golpeado. ¿Esto está relacionado con la forma en que se está serializando esta clase?
No estoy * al tanto * de que este fue un cambio radical entre v1 y v2; quizás la sutil diferencia es que v1 estaba buscando más para 'IList', o una combinación de 'IEnumerable '** con ** un público' Add '. –