我花了一些时间寻找一些替代方法来处理通用对象,我看到了与我类似的问题,但没有我想的那么具体?协议缓冲区有多种我可以使用的标量类型,但它们大多是原始的。我希望我的消息灵活,并且能够具有某种列表的字段。
假设我的 .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;
}
}
这很好,可以工作,而且我有一个列表,其中对象可以是任何原始类型,也可以是 List < someObject >。但是-这里的问题是,每当我需要处理一种新型对象时,我都需要编辑我的 .proto 文件,为 C# 和 java 重新编译(我需要它的语言)...
如果协议缓冲区无法处理通用对象类型,是否还有其他替代方案可以?非常感谢您对此事的任何帮助。