C#中使用ProtoBuf3

1、安装Google.Protobuf和Google.Protobuf.Tools的Nuget包

打开Nuget管理器,搜索Protobuf,安装Google.ProtobufGoogle.Protobuf.Tools二个包。

2、序列化和返序列化

using Google.Protobuf;

public static class Pack
{
    // 将byte[] 数据块序列化成ProtoBuf结构体
    public static T Deserialize<T>(byte[] data) where T:IMessage,new()
    {
        var msg = new T();
        return (T)msg.Descriptor.Parser.ParseFrom(data);
    }

    // 将ProtoBuf结构体返序列化成btye[]数据块
    public static byte[] ToArray(IMessage data)
    {
        return data.ToByteArray();
    }
}

3、测试

3.1 如proto文件

syntax = "proto3";

//物品信息
message ItemProto {
    int32 id = 1;       //id
    sint64 count = 2;
}

3.2 C#中使用

public class Program
{
    public static void Main(string[] args)
    {
        // 消息结构体
        var item = new ItemProto();
        item.id  = 1;
        item.count = 10;

        // 序列化
        var data = Pack.ToArray(item);

        // 反序列化
        var result = Pack.Deserialize<ItemProto>(data);
    }
}
0%