我有以下基类:
[ProtoContract]
public class Packet
{
[ProtoMember(1)]
public int Id { get; set; }
}
此课程将由10多个其他课程推导出来。我的问题是我应该如何分配ProtoInclude属性?
这是一个好的解决方案吗?
[ProtoContract]
[ProtoInclude(20, typeof(NotifyClientBalance))]
[ProtoInclude(21, typeof(IsAlive))]
[ProtoInclude(22, typeof(TransactionConfirmation))]
...
public class Packet
{
[ProtoMember(1)]
public int Id { get; set; }
}
有更好的选择吗?我应该如何为ProtoInclude分配标签?对我来说一切都不清楚,并且没有关于此事的好文件。
由于
P.S。
ProtoInclude可以跨不同平台移植吗?我特别感兴趣的是Python。
再次感谢:)
答案 0 :(得分:2)
在protobuf-net中使用,这种方法很好。数字很好而且很低,这使它保持高效。
继承不是protobuf规范的一部分,因此不能在平台之间移植它 - 至少不是继承。在获取数据方面它是可移植的。它映射到类似:
message Packet {
optional int id = 1;
optional NotifyClientBalance balance = 20;
// ...
}
message NotifyClientBalance {...}
//...
或者只使用Serializer.GetProto<T>()
将架构导出为.proto