Не в базовой реализации - вместо этого вы хотели бы использовать инкапсуляцию.
Однако, если вы используете просто protobuf-net в качестве первого кода,Я взломал это:
[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>()); }
}
}
Конечно, я предполагаю, что есть некоторые дополнительные детали в классах - "как есть", вы можете просто использовать enum (который равен хорошоПоддержанные).