2012-10-25 70 views
2

是否有可能在C++中序列化一个类,并使用协议缓冲区将其反序列化为C#中的类似类?我已经尝试过使用Json序列化来克服不同平台中的序列化问题,但它对数据类型(如数组列表等)有问题。因此,有关使用Google协议缓冲区的任何建议?协议缓冲区序列化C + +和反序列化C#类

回答

6

Protocol Buffers将允许您描述数据结构,并将其序列化或反序列化为C++,Java,C#和其他平台中的对象。您(通常无论如何)都不会(通常情况下)序列化您自己的类的实例 - 您将序列化生成的类的实例。 (我知道protobuf-net允许你使用描述如何将它们序列化到协议缓冲区的属性来修饰你自己的类,而不必使用生成的类。我不知道这是否已经在C++中完成。)

目前尚不清楚这是否真的符合您的要求,但protobufs肯定允许跨平台的数据交换。它对于哪些数据可以被序列化确实存在限制 - 它们都是相当原始的,并且你可以从原始数据构建更复杂的结构。如果你已经在代码中获得了你的数据模型,然后不得不在协议缓冲区中重新实现它,这可能会令人沮丧,但它确实有效...

+0

谢谢。 C#端我已经准备好了我的数据模型..但是我可以在序列化层上做一些改动..但是我仍然认为它对于像Dictionary,array list,ete这样的类型我会变得很难。谢谢很多评论 – Navin

+1

@Navin:那么,你只需要适当地模拟这些。您的应用程序结构(例如,是否仅在序列化边界或整个代码中使用原型类)完全取决于您。 –