我知道 protobuf 不支持继承,并且由于我在另一端使用 protoc-c,所以我也不想使用任何扩展。但是,我坚持使用依赖于继承的 C# 模型:
class Header {
public int version { get; set; }
}
class Message : Header {
public String message { get; set; }
}
我试图将继承转换为有线格式的封装,如下所示:
[ProtoContract]
class Header {
[ProtoMember(1)]
public int version { get; set; }
}
[ProtoContract]
class Message : Header {
[ProtoMember(1)]
public Header Header { get { return this; } set { } }
[ProtoMember(2)]
public String Message { get; set; }
}
然后我收到“意外的子类型”错误提示我: 为什么我必须使用 [ProtoInclude]?
我觉得我的情况与上述问题的情况不同,所以想再次询问我的具体情况,我试图从内到外继承,如果没有ProtoInclude,这是否不可能?
如果没有,我将如何在 v2 中做到这一点?
----- 已编辑 ------
我在 C(使用 protobuf-c)端的 proto 文件是这样的:
message Header {
optional int32 version = 1;
}
message Message {
optional Header header = 1;
optional string message = 2;
}
我不想将 Message 放在 Header 中,也不想使用网络继承功能。这种格式使我能够轻松地将内容添加到 Header 消息中,而无需更改 Message 消息。