Estoy usando Protobuf.net para serializar algunas clases. Me gustaría poder serializar la clase SuperHero (a continuación) sin tener que especificar [ProtoInclude] en la clase base. Esto se debe a que las clases derivadas se generan automáticamente pero la clase base no, por lo que la clase base no conoce directamente sus clases derivadas.Protobuf.net: cómo manejar la herencia sin [ProtoInclude]
[ProtoContract]
class Person
{
[ProtoMember(1)]
public int Id { get; set; }
[ProtoMember(2)]
public string Name { get; set; }
}
[ProtoContract]
class SuperHero : Person
{
[ProtoMember(3)]
public string Powers { get; set; }
}
Estoy utilizando la última versión de protobuf.net.
El "algún mecanismo" que utilicé fue crear una versión personalizada del 'ProtoContractAttribute' para que yo pueda decorar una clase derivada con' [Pr otoContract (7)] 'que se comportaría igual que decorar la clase base con' [ProtoInclude (typeof (SuperHero), 7)] '. Sin embargo, el hecho de que los atributos estén "sellados" es desafortunado. –
¡Gracias por la respuesta tan rápida! Eso aclara las cosas bien para mí. –