我试图了解 protobuf-net 的 Dictionary/KeyValuePair 支持。我们希望使用底层二进制流和从 java 生成的 proto 文件,但生成的 .proto 文件包含看起来像名为 Pair_String_Int32 的自定义类型。
有人可以解释一下吗?
我有一个这样映射的类:
[DataContract]
public class ForwardCurve
{
[DataMember(Order=1, IsRequired = true)]
public string Commodity { get; set; }
[DataMember(Order = 2, IsRequired = false)]
public IDictionary<string, int> DictValue { get; set; }
[DataMember(Order = 3, IsRequired = false)]
public IList<string> ListValue { get; set; }
}
使用 Serializer.GetProto 生成的 .proto 文件将是:
message ForwardCurve {
required string Commodity = 1;
repeated Pair_String_Int32 DictValue = 2;
repeated string ListValue = 3;
}
那么什么是 Pair_String_Int32 (以及进入 protobuf 字节流的内容)以及是否有任何方法可以映射它,以便 protobuf 通过使用 protoc 可以在 Java 中创建等效的映射代码?
要使其正常工作,请向生成的 .proto 文件添加一条新消息,如下所示。
message Pair_String_Int32 {
required string Key = 1;
required int32 Value = 2;
}
然后protoc就能为Java创建相应的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)