【发布时间】:2012-09-06 17:27:03
【问题描述】:
我花了一些时间寻找一些替代方法来处理通用对象,我看到了与我类似的问题,但没有我想的那么具体? 协议缓冲区有多种我可以使用的标量类型,但它们大多是原始的。 我希望我的消息是灵活的,并且能够有一个是某种列表的字段。
假设我的 .proto 文件如下所示:
message SomeMessage
{
string datetime = 1;
message inputData // This would be a list
{
repeated Object object = 1;
}
message Object
{
? // this need to be of a generic type - This is my question
// My work around - Using extentions with some Object
//List all primitive scalar types as optional and create an extension 100 to max;
}
message someObject //some random entity - for example, employee/company etc.
{
optional string name = 1; optional int32 id = 2;
}
extend Object
{
optional someObject obj = 101;
}
}
这很好,可以工作,而且我有一个列表,其中对象可以是任何原始类型,也可以是列表 。 但是 - 这里的问题是,任何时候我需要处理一种新类型的对象,我都需要编辑我的 .proto 文件,为 C# 和 java 重新编译(我需要它的语言)......
如果协议缓冲区不能处理通用对象类型,还有其他替代方案可以吗? 非常感谢您对此事的任何帮助。
【问题讨论】:
-
proto 语言既不支持泛型也不支持继承。不支持 AFAIK。
-
谢谢马克!我会把这个作为答案。
-
查看此最新文档以了解支持的数据类型:developers.google.com/protocol-buffers/docs/proto3#json
标签: object protocol-buffers generic-list