我想用protoBuf序列化一个类。我的班级有一个struct
字段。我该如何序列化?
[ProtoContract]
class P
{
[ProtoMember(1)]
private T t;
public P()
{ }
}
[ProtoContract]
public struct T
{
[ProtoMember(1)]
public int a;
[ProtoMember(2)]
public int b;
}
答案 0 :(得分:1)
只是序列化/反序列化它 - 它应该工作正常。因为t
是private
,所以我添加了一个访问器(仅供我下面的代码使用 - 此访问器与序列化完全无关):
public T T { get { return t; } set { t = value; } }
然后这很好用:
static class Program
{
static void Main()
{
P p = new P { T = new T { a = 123, b = 456 } },
clone;
using (var ms = new MemoryStream())
{
Serializer.Serialize(ms, p);
ms.Position = 0;
clone = Serializer.Deserialize<P>(ms);
}
System.Console.WriteLine(clone.T.a); // 123
System.Console.WriteLine(clone.T.b); // 456
}
}