Sto usando Protobuf.net per serializzare alcune classi. Mi piacerebbe essere in grado di serializzare la classe SuperHero (sotto) senza dover specificare [ProtoInclude] sulla classe base. Questo perché le classi derivate vengono generate automaticamente ma la classe base non lo è, quindi la classe base non conosce direttamente le sue classi derivate.Protobuf.net: come gestire l'ereditarietà senza [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; }
}
Sto usando l'ultima versione di protobuf.net.
Il "meccanismo in uso" che ho usato è stato creare una versione personalizzata di "ProtoContractAttribute" in modo da poter decorare una classe derivata con "[Pr otoContract (7)] 'che si comporterebbero come decorare la classe base con' [ProtoInclude (typeof (SuperHero), 7)] '. Il fatto che gli attributi siano "sigillati" è sfortunato, comunque. –
Grazie per la risposta molto rapida! Questo chiarisce bene le cose per me. –