c# - Fuerza protobuf-net para ignorar las interfaces IEnumerable/ICollection
wpf serialization (1)
[ProtoContract(IgnoreListHandling = true)]
public class FileTree : ICollection<FilePath> ...
{ ... }
Deberías hacerlo. Honestamente, no creo haber considerado las devoluciones de llamadas en las listas, ya que se manejan de forma muy diferente a las entidades, pero con lo anterior debería funcionar. Avísame si no es así.
De la documentación intellisense:
Obtiene o establece un valor que indica que este tipo NO se debe tratar como una lista, incluso si tiene características similares a listas (enumerable, add, etc.)
¿Cómo puedo obtener v2 de protobuf-net para ignorar el hecho de que mi clase implementa ICollection, IEnumerable, etc.?
Para este escenario en particular, solo quiero serializar 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 se escribió para colapsar rutas de archivos como "C: / happy.txt" "C: / history.txt" en algo más parecido a
"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.
EDITAR: Una última cosa que debería 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. ¿Esto está relacionado con la forma en que se está serializando esta clase?