message base
{
required int32 cmd = 1;
extensions 1000 to max;
}
message derived
{
extend base{ required derived test = 1001; }
required int32 a = 1;
extensions 1000 to 3000;
}
message derived2
{
extend derived{ required derived2 b = 1001;
required int32 b = 1;
}
考虑到这是proto文件。
在C#中创建derived2 protobuf对象时,如何对derived.a和base.cmd进行膨胀?
考虑到解决方案将涉及protobuf / protobuf-net库
答案 0 :(得分:0)
protobuf-net目前对extend
/ extensions
没有大量支持。 做的内容是让您访问此类型的未知成员,只要该类型在反序列化时具有放置该信息的位置。如果你是从protogen开始的,那么情况应该是这样 - 否则,最简单的选择是将你的POCO改为继承Extensible
。完成后,Extensible.GetValue<T>
提供了一种通过其字段编号访问未声明成员的基本机制。