当前位置 : 主页 > 大数据 > 区块链 >

protocol-buffers – 带继承的protobuf?

来源:互联网 收集:自由互联 发布时间:2021-06-22
是否可以使用 protobuf继承的类? 我想做这样的事情 class Expr;class AddExpr : Expr;class CallFunc: Expr;class FunctionBody{ repeatable Expr expr;} 不在核心实现中 – 您可能希望使用封装. 但是,如果你只使用
是否可以使用 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>()); }
    }
}

当然,我假设在类中有一些额外的细节 – “按原样”你可以使用枚举(这是很好的支持).

网友评论