Protobuf-net使用示例

    本示例使用ProtoBuf的.Net社区版本:https://github.com/mgravell/protobuf-net。创建控制台程序,从NuGet中搜索并安装作者为Marc Gravell的版本。

1、GIthub示例(包含关系)

    [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; }
    }

2、继承示例

    [ProtoContract]
    [ProtoInclude(100, typeof(DerivedClass))]
    public class BaseClass
    {
        [ProtoMember(1)]
        public int Id { get; set; }
    }
    [ProtoContract]
    public class DerivedClass : BaseClass
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
protobuf-net是一个用于.NET代码的基于契约的序列化程序,它使用Google设计的"protocol buffers"序列化格式来写入数据。它适用于大多数.NET语言,可以用于序列化和反序列化对象。你可以通过NuGet安装程序包,也可以直接从GitHub下载源代码。 ProtoBuf是一种二进制编码格式,它可以将结构化数据序列化为紧凑的二进制格式,以便在不同的平台和语言之间进行高效的数据交换。ProtoBuf编码原理是通过定义消息的结构和字段类型来生成代码,然后使用这些生成的代码来序列化和反序列化数据。 以下是一个使用protobuf-net进行序列化和反序列化的示例: ```csharp using System; using System.IO; using ProtoBuf; // 定义一个消息类 [ProtoContract] public class MyMessage { [ProtoMember(1)] public int Id { get; set; } [ProtoMember(2)] public string Name { get; set; } } public class Program { public static void Main() { // 创建一个消息对象 var message = new MyMessage { Id = 1, Name = "John" }; // 序列化消息对象 using (var stream = new MemoryStream()) { Serializer.Serialize(stream, message); byte[] data = stream.ToArray(); // 反序列化消息对象 var deserializedMessage = Serializer.Deserialize<MyMessage>(new MemoryStream(data)); // 输出反序列化后的消息对象 Console.WriteLine($"Id: {deserializedMessage.Id}, Name: {deserializedMessage.Name}"); } } } ``` 这个示例演示了如何使用protobuf-net对一个消息对象进行序列化和反序列化。首先,我们定义了一个`MyMessage`类,并使用`ProtoContract`和`ProtoMember`属性来指定字段的序列化顺序。然后,我们创建一个`MyMessage`对象,并将其序列化到一个`MemoryStream`中。最后,我们从序列化的数据中反序列化出一个新的`MyMessage`对象,并输出其属性值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值