可以将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/

10-13 05:29