在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)