Non nell'attuazione nucleo - si desidera utilizzare l'incapsulamento, invece.
Tuttavia, se si utilizza solo protobuf-net, come codice-prima, ho incidere intorno esso:
[ProtoInclude(1, typeof(AddExpr))]
[ProtoInclude(2, typeof(CallFunc))]
[ProtoContract]
class Expr {}
[ProtoContract]
class AddExpr : Expr {}
[ProtoContract]
class CallFunc: Expr {}
[ProtoContract]
class FunctionBody{
private List<Expr> expressions;
[ProtoMember(1)]
public List<Expr> Expressions {
get { return expressions ?? (expressions = new List<Expr>()); }
}
}
Naturalmente, sto assumendo c'è qualche dettaglio aggiuntivo nelle classi - "così come sono "potresti semplicemente usare un enum (che è supportato da).
fonte
2011-01-20 11:52:35
Una buona discussione può essere trovata in questo post del blog: http://www.indelible.org/ink/protobuf-polymorphism/ – earcam