Protocol buffers 如何在不引用protobuf-net的情况下使C#类protobuf-net可序列化?

Protocol buffers 如何在不引用protobuf-net的情况下使C#类protobuf-net可序列化?,protocol-buffers,protobuf-net,Protocol Buffers,Protobuf Net,首先,我非常喜欢protobuf网络,因为它的速度和易用性。 现在我正在开发一个.NET类库,并希望在不实际引用它的情况下使我的一些类protobuf NET就绪,因为: 我不知道我的客户将使用哪个环境,所以我不知道选择哪个protobuf网络二进制文件 我希望最小化封装外形的大小(也许它们根本不需要序列化) 据我所知,这可以通过手动编写.proto文件来完成。谁能给我解释一下或者给我一个链接怎么做?有没有办法从属性描述生成.proto文件?客户端序列化/反序列化代码是什么样子的 据我所知,这可

首先,我非常喜欢protobuf网络,因为它的速度和易用性。 现在我正在开发一个.NET类库,并希望在不实际引用它的情况下使我的一些类protobuf NET就绪,因为:

  • 我不知道我的客户将使用哪个环境,所以我不知道选择哪个protobuf网络二进制文件
  • 我希望最小化封装外形的大小(也许它们根本不需要序列化)
  • 据我所知,这可以通过手动编写.proto文件来完成。谁能给我解释一下或者给我一个链接怎么做?有没有办法从属性描述生成.proto文件?客户端序列化/反序列化代码是什么样子的

    据我所知,这可以通过手动编写.proto文件来完成

    没有;这是没有必要的,也不会有帮助

    假设您当前有一个类型,如下所示:

    [ProtoContract]
    public class Foo {
        [ProtoMember(1)]
        public int Bar {get;set;}
        // ...
    }
    
    有两个选项可供您选择:

  • 使用内置平台属性,例如:

    [DataContract]
    public class Foo {
        [DataMember(Order=1)]
        public int Bar {get;set;}
        // ...
    }
    

  • 在运行时显式配置模型(在模型尝试使用
    Foo
    之前):

    (当然,后者仍然要求您在某个时候与
    ProtoBuf
    交谈,但并不要求您的POCO类型了解序列化)

  • 这两种方法都应该有效

    据我所知,这可以通过手动编写.proto文件来完成

    没有;这是没有必要的,也不会有帮助

    假设您当前有一个类型,如下所示:

    [ProtoContract]
    public class Foo {
        [ProtoMember(1)]
        public int Bar {get;set;}
        // ...
    }
    
    有两个选项可供您选择:

  • 使用内置平台属性,例如:

    [DataContract]
    public class Foo {
        [DataMember(Order=1)]
        public int Bar {get;set;}
        // ...
    }
    

  • 在运行时显式配置模型(在模型尝试使用
    Foo
    之前):

    (当然,后者仍然要求您在某个时候与
    ProtoBuf
    交谈,但并不要求您的POCO类型了解序列化)


  • 这两种方法都应该有效。

    谢谢你的回答!但现在我有另一个问题:我的类型很不幸地看起来像列表:(所以我需要“IgnoreListHandling=true”,而且似乎我无法使用DataContract属性。谢谢你的回答!但是现在我有另一个问题:我的类型很不幸地看起来像列表:(所以我需要“IgnoreListHandling=true”,并且似乎我不能使用DataContract属性。