我有以下(简化!)。proto。它来自另一个软件,我无法修改它。
package test;
message Base
{
optional string name = 2;
extensions 1000 to max;
}
message Extension1 {
extend Base {
optional Extension1 type = 1000;
}
optional double blabla = 2;
}
message Extension2
{
extend Base {
optional Extension2 type = 1001;
}
optional double blabla = 2;
}
编译是否使用protogen为Base消息(提取)生成以下C#:
private test.Extension1 _type = null;
[global::ProtoBuf.ProtoMember(1000, IsRequired = false, Name=@"type", DataFormat = global::ProtoBuf.DataFormat.Default)]
[global::System.ComponentModel.DefaultValue(null)]
public test.Extension1 type
{
get { return _type; }
set { _type = value; }
}
private test.Extension2 _type = null;
[global::ProtoBuf.ProtoMember(1001, IsRequired = false, Name=@"type", DataFormat = global::ProtoBuf.DataFormat.Default)]
[global::System.ComponentModel.DefaultValue(null)]
public test.Extension2 type
{
get { return _type; }
set { _type = value; }
}
正如您所看到的,扩展名都称为“类型”,但应该称为“Extension1 :: type”和“Extension2 :: type”(如果我对extensions的理解是正确的话)。
显然,这不会编译。另外,Name = @“type”对我来说似乎不对(不确定,可能没问题)。
如何才能阅读使用此.proto序列化的文件?
我想到的可能的解决方法:
答案 0 :(得分:1)
选项: