protobuf-net可用于(反)序列化包含异构对象的列表吗?

时间:2011-05-22 09:12:10

标签: .net protobuf-net

是否可以(反)序列化异构对象列表?

1 个答案:

答案 0 :(得分:2)

List<object>不包含类型元数据的序列化格式提出了许多挑战......但与往常一样,有技巧,陷阱和变通方法。

如果您指的是最外层的 ,这里有一些选项可以围绕使用不同的标记(/ field-number)来指示消息类型。这对于API(例如,套接字会话)非常有用,其中可能随时会出现不同的消息。例如:How can I send multiple types of objects across Protobuf?

消息内部有点棘手;如果候选类型列表很小,那么合理的解决方法就像这里提到的那样:Protobuf attributes with a hierarchy of generic classes,即将每个预期类型视为专业化。

如果无法预测类型,则v2包含另一种解决方法,但包含的元数据多于正常情况;见http://marcgravell.blogspot.com/2011/03/objects-graphs-and-all-that-jazz.html