Utiliser Protobuffer dans .NET pour implémenter la sérialisation et la désérialisation
1. Accédez au site officiel pour télécharger protobuf-net. dll, Adresse officielle : http://code.google.com/p/protobuf-net/
2. Créez une application console
3. Ajoutez une bibliothèque de classes : protobuf-net.dll. à la demande.
Exemple de code :
Préparez une classe d'entité à tester (notez que les classes et les méthodes doivent avoir la fonctionnalité de sérialisation protoBuffer) :
[ProtoContract] public class Student { [ProtoMember(1)] public intStudentId { get; set; } [ProtoMember(2)] public stringName { get; set; } [ProtoMember(3)] public stringClassName { get; set; } }
Ensuite, faites ceci. la classe effectue la sérialisation et la désérialisation
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(); } } }
Considérons maintenant le cas de plusieurs entités et testons la sérialisation d'une collection :
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(); } }
Ce qui précède est l'explication détaillée de la sérialisation et de la désérialisation à l'aide de Protobuffer dans .NET. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !