如何使用protoBuf进行结构序列化

时间:2013-12-02 12:39:14

标签: c# struct protocol-buffers protobuf-net

我想用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;
}

1 个答案:

答案 0 :(得分:1)

只是序列化/反序列化它 - 它应该工作正常。因为tprivate,所以我添加了一个访问器(仅供我下面的代码使用 - 此访问器与序列化完全无关):

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
    }
}