我想在C ++中序列化一个对象,将其发送到c#并在那里反序列化。对于一个简单的类,最快的方法是什么?
class Person
{
int id;
string name;
}
答案 0 :(得分:1)
C ++原型工具确实希望您使用.proto模式,因此:您需要在.proto中描述您的意图;幸运的是,这很简单:
syntax = "proto3";
message Person {
int32 id = 1;
string name = 2;
}
然后,至少对于C ++部分,您需要通过Google的protoc
工具运行该代码,以输出C ++存根,并对其进行处理。对于C#部分,您(至少)有2个选择:您可以使用protoc
做同样的事情来生成C#,也可以使用protobuf-net来乐意 使用从.proto生成的类型(通过protogen
-protobuf-net等效于protoc
),或的类型。例如,在带有protobuf-net的C#中,您的上述类型将仅适用于:
[ProtoContract]
class Person
{
[ProtoMember(1)]
int id;
[ProtoMember(2)]
string name;
}
在任何情况下(协议或原始),您可能会在玩代码生成步骤方面发现this online tool useful。
做到了:使用特定于库的序列化机制,就可以了。