美文网首页
Protobuf-net涉水记录

Protobuf-net涉水记录

作者: Kim_9527 | 来源:发表于2017-10-31 18:33 被阅读47次

背景:知道了Protobuf在C#控制台的用法之后兴高采烈的要弄到Unity去,然后发现Unity5还是只支持到.net 3.5,东找找西找找,有人说用Protobuf-net,有人说也可以用Protobuf-csharp-port,选了Protobuf-net来试试

Protobu-net

1.VS 2017 创建.net3.5的dll工程, Nuget 打包protobuf-net成dll放到Unity工程的Plugins目录

2.创建Protobuf

    // 
    [ProtoContract]
    class Person {
        [ProtoMember(1)]
        public int Id {get;set;}
        [ProtoMember(2)]
        public string Name {get;set;}
        [ProtoMember(3)]
        public Address Address {get;set;}
    }
    [ProtoContract]
    class Address {
        [ProtoMember(1)]
        public string Line1 {get;set;}
        [ProtoMember(2)]
        public string Line2 {get;set;}
    }

3.序列化Protobuf对象

    // 利用FileStream作为序列化的载体,会创建本地文件
    using (var file = File.Create("person.bin")) {
        Serializer.Serialize(file, person);
    }

    // 利用MemoryStream作为序列化的载体,转化为byte数组
    using (MemoryStream stream = new MemoryStream()){
        ProtoBuf.Serializer.Serialize(stream,my);
        byte[] result = new byte[stream.Length];
        stream.Position = 0;
        stream.Read(result,0,result.Length);
        stream.Close();
        return result;
    }

4.反序列化Protobuf对象

    // 使用FileStream作为反序列化的载体,转换为Protobuf对象
    using (var file = File.OpenRead("person.bin")) {
        newPerson = Serializer.Deserialize<Person>(file);
    }
    
    // 使用MemoryStream作为反序列化载体,转化为Protobuf对象
    using(MemoryStream stream = new MemoryStream()){
        stream.Write(info,0,info.Length);
        stream.Position = 0;
        Hello hello =ProtoBuf.Serializer.Deserialize<Hello>(stream);
        stream.Close();
    }

相关文章

  • Protobuf-net涉水记录

    背景:知道了Protobuf在C#控制台的用法之后兴高采烈的要弄到Unity去,然后发现Unity5还是只支持到....

  • ProtoBuf-net Serializer.Serializ

    1)ProtoBuf-net Serializer.Serialize产生大量的GC 2)如何快速在工程代码中每个...

  • protobuf-net

    http://www.cnblogs.com/sifenkesi/p/4045392.html

  • .NET 开源Protobuf-net从入门到精通

    《.NET 开源Protobuf-net从入门到精通》课程包含以下两个部分: 一、.NET 开源Protobuf-...

  • protobuf-net运行在Unity上,修复IL2CPP反射

    Unity开发中,我们可能需要用到protobuf-net这个C#实现的ProtoBuff库。 但是,protob...

  • 涉水

    揉碎在睡意中的顾虑 累瘫了身心 想到来日就会出现的事与愿违 再带上疲劳的心肺 去见娇艳的阳光 风生水起的纬度 自有...

  • 涉水

    日暮涉水 目光便停在了流水之上 随着渐起的波浪翻腾 殷红的河面掀起了波纹 渐次荡开 召唤这岸边的柳絮 纷扬而下 摇...

  • 涉水

    在漆黑一片的小屋里,门窗紧闭着,炉子里的火呼呼作响,火舌捕撩捕撩地喷打着炉盖的小孔,时不时地有一缕光,从小孔里窜出...

  • 跋山涉水

    远山连绵,漫长的公路,我低下头看见阳光照射下路边草甸凸起的影子。 抬头看见蔚蓝的天空和白灰相间的云朵。远处的山峰和...

  • 涉水时长

    自从你在北边的余光中和我挥手告别 冬天便到了,风声开始呼啸 我从来没有和你见过最后一面 只是约好了执行宿命的摆弄 ...

网友评论

      本文标题:Protobuf-net涉水记录

      本文链接:https://www.haomeiwen.com/subject/nhbbpxtx.html