在VS中使用Protobuf
        【摘要】     首先需要下载:protobuf-net.dll 文件 : 
 
 下载链接。没有积分的同学,扫描主页左侧二维码或 V信搜 " 开发同学留步",回复“ ProtoGen”或者“PG” 获取资源。 
 
 
新建项目:然后添加引用,导入刚刚下载的文件,步骤如下图:  
 
 
最后编写如下代码: 
using System;
using System.Collections...
    
    
    
    首先需要下载:protobuf-net.dll 文件 :
下载链接。没有积分的同学,扫描主页左侧二维码或 V信搜 " 开发同学留步",回复“ ProtoGen”或者“PG” 获取资源。
新建项目:然后添加引用,导入刚刚下载的文件,步骤如下图:
 


最后编写如下代码:
using System;
using System.Collections.Generic;
using ProtoBuf;
namespace _011_实验
{ class Program { static void Main(string[] args) { Person person1 = new Person() { Name = "Czhenya", Age = 12, Hp = 32 }; Person person2 = new Person() { Name = "CZY", Age = 31, Hp = 46}; List<Person> PerList = new List<Person>() { person1, person2 }; string strRel = ProtobufHelp.Serialize<List<Person>>(PerList); Console.WriteLine(strRel); Console.WriteLine("序列化成功"); Console.WriteLine("反序列化结果"); List<Person> NewPerList = ProtobufHelp.DeSerialize<List<Person>>(strRel); for (int i = 0; i < NewPerList.Count; i++) { Console.WriteLine(NewPerList[i].ToString()); } Console.ReadKey(); } } [ProtoContract] class Person { [ProtoMember(1)] public string Name { get; set; } [ProtoMember(2)] public Int32 Age { get; set; } [ProtoMember(3)] public double Hp { get; set; } public override string ToString() { return Name+" "+Age +" "+Hp; } }
}
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 
注意两个类在一个命名空间下:
using ProtoBuf;   //引用命名空间
using System.IO;
using System.Text;
namespace _011_实验
{ class ProtobufHelp { /// <summary> /// 序列化成string /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <returns>返回字符串</returns> public static string Serialize<T>(T t) { using (MemoryStream ms = new MemoryStream()) { Serializer.Serialize<T>(ms, t); return Encoding.UTF8.GetString(ms.ToArray()); } } /// <summary> /// 序列化到文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="path"></param> /// <param name="data"></param> public static void Serialize<T>(string path, T data) { using (Stream file = File.Create(path)) { Serializer.Serialize<T>(file, data); file.Close(); } } /// <summary> /// 根据字符串反序列化成对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="content"></param> /// <returns></returns> public static T DeSerialize<T>(string content) { using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content))) { T t = Serializer.Deserialize<T>(ms); return t; } } /// <summary> /// 根据文件流返回对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="filestream"></param> /// <returns></returns> public static T DeSerialize<T>(Stream filestream) { return Serializer.Deserialize<T>(filestream); } }
}
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 - 60
 - 61
 - 62
 
运行结果图:
 
文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。
原文链接:czhenya.blog.csdn.net/article/details/78219863
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)