protobuf与继承?

时间:2011-01-20 11:43:34

标签: protocol-buffers

是否可以将protobuf与继承的类一起使用?

我想做这样的事情

class Expr;
class AddExpr : Expr;
class CallFunc: Expr;

class FunctionBody{
    repeatable Expr expr;
}

1 个答案:

答案 0 :(得分:10)

不在核心实现中 - 您可能希望使用封装。

但是如果您使用只是 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>()); }
    }
}

当然,我假设课程中还有一些额外的细节 - “按原样”你可以使用枚举( 支持得很好)。