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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta