Protobuffer を使用して .NET でシリアル化と逆シリアル化を実装します
1. 公式 Web サイトにアクセスして protobuf-net.dll (公式アドレス: http://code.google.com/p/protobuf) をダウンロードします。 -net /
2. コンソール アプリケーションを構築します
3. クラス ライブラリ: protobuf-net.dll をアプリケーションに追加します。
サンプルコード:
テストするエンティティクラスを準備します (クラスとメソッドは protoBuffer シリアル化機能を追加する必要があることに注意してください):
[ProtoContract] public class Student { [ProtoMember(1)] public intStudentId { get; set; } [ProtoMember(2)] public stringName { get; set; } [ProtoMember(3)] public stringClassName { get; set; } }
次に、このクラスに対して シリアル化 と 逆シリアル化
using System; using System.Collections.Generic; using System.Linq; using System.Text; using ProtoBuf; using ProtoBufferDemo.Entity; using System.IO; namespace ProtoBufferDemo { class Program { private const string TestPath = @"D:/1.txt"; static void Main(string[] args) { ////////////////////////序列化////////////////////////////// Student stu = new Student() { StudentId = 1, Name = "zhangsan", ClassName = "classOne" }; if (!File.Exists(TestPath)) { FileStream fs = File.Create(TestPath,1024, FileOptions.Asynchronous); fs.Dispose(); } Console.WriteLine("开始序列化并导出到文件..."); using (Stream s = new FileStream(TestPath,FileMode.Open ,FileAccess.ReadWrite)) { Serializer.Serialize<Student>(s, stu); s.Close(); } Console.WriteLine("序列化完毕"); //////////////////////反序列化//////////////////////////// Console.WriteLine("反序列化并输出..."); using (Stream s = new FileStream(TestPath,FileMode.Open)) { Student st = Serializer.Deserialize<Student>(s); Console.WriteLine("studentName:"+ stu.Name + "/r/n" + "studentId:"+ stu.StudentId + "/r/n" + "className:" + stu.ClassName); s.Close(); } Console.Read(); } } }
次に、複数のエンティティの状況とテスト コレクションのシリアル化:
class Program { private const string TestPath = @"D:/1.txt"; static void Main(string[] args) { ////////////////////////序列化////////////////////////////// List<Student> stu = new List<Student>() { new Student(){ StudentId = 1, Name = "zhangsan", ClassName = "classOne"}, new Student(){StudentId = 2, Name = "lisi", ClassName = "classTwo"} }; if (!File.Exists(TestPath)) { FileStream fs = File.Create(TestPath,1024, FileOptions.Asynchronous); fs.Dispose(); } Console.WriteLine("开始序列化并导出文件..."); using (Stream s = new FileStream(TestPath,FileMode.Open, FileAccess.ReadWrite)) { Serializer.Serialize<List<Student>>(s,stu); s.Close(); } Console.WriteLine("序列化完毕"); //////////////////////反序列化//////////////////////////// Console.WriteLine("反序列化并输出..."); using (Stream s = new FileStream(TestPath,FileMode.Open)) { List<Student> sl = Serializer.Deserialize<List<Student>>(s); foreach (var student in sl) { Console.WriteLine("studentName:"+ student.Name + "/r/n" + "studentId:" + student.StudentId + "/r/n" + "class Name:" + student.ClassName); } s.Close(); } Console.Read(); } }
上記は、.NET の Protobuffer を使用したシリアル化と逆シリアル化の詳細な説明です。さらに関連するコンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。 )!