可以将protobuf与继承的类一起使用吗?
我想做这样的事情
class Expr;
class AddExpr : Expr;
class CallFunc: Expr;
class FunctionBody{
repeatable Expr expr;
}
最佳答案
不在核心实现中-您可能希望使用封装。
但是,如果您仅使用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>()); }
}
}
当然,我假设类中还有一些其他细节-“按原样”您可以只使用一个枚举(得到充分支持)。
关于protocol-buffers - 带有继承的protobuf?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4746678/