试图让我的脑海里围绕谷歌的protobuf。 我发现在C#中的protobuf的一些实现,但他们似乎缺少一个特征:从现有的C#类装饰有属性自动生成.proto文件的能力。
我想这样做,而不是从自动生成的C#类会从.proto文件这种方式的原因是因为我已经在我的项目中定义的C#类,我不想重复他们只是为了满足protobuf的。
有谁曾经遇到过这样的情况?
更新
这可能只是装点一个C#类,而不是使用.proto文件来使用protobuf的?
试图让我的脑海里围绕谷歌的protobuf。 我发现在C#中的protobuf的一些实现,但他们似乎缺少一个特征:从现有的C#类装饰有属性自动生成.proto文件的能力。
我想这样做,而不是从自动生成的C#类会从.proto文件这种方式的原因是因为我已经在我的项目中定义的C#类,我不想重复他们只是为了满足protobuf的。
有谁曾经遇到过这样的情况?
更新
这可能只是装点一个C#类,而不是使用.proto文件来使用protobuf的?
好消息; 你所描述的(具有现有的C#类)是什么protobuf网的预期使用情况。 所有.proto的东西(“硫辛酸”时,VS插件等)均加入回味无穷 。 protobuf网的核心不知道他们还是关心他们。
协议缓冲区定义了DSL(.proto,你提到),其被实现之间共享的,并且是(有时)用于代码生成。 当我第一次写protobuf网,代码生成方面是不是我最关心的 - 仅仅是.NET开发人员一般都是有罪的(包括我自己)的“实施第一”,而不是“合同第一”。
因此,protobuf网并不需要.proto文件工作; 一个属性类足以毫无疑义地序列化/反序列化。 只要使用Serializer.Serialize
, .Merge
和.Deserialize
(ETC)。
尽管如此; 它确实包含了一些对这个非常欠发达和实验的支持:
string proto = Serializer.GetProto<YourType>();
这还远远没有完成,但可用于简单类型的工作。 如果你有它失败的一些具体情况,然后让我知道(添加评论或登录问题)。 然而; 大部分时间,感兴趣的.proto人会先写.proto并从那里工作。
工作装饰类型的示例,请在项目主页 ; 这完全取决于你是否使用WCF属性,XML属性或protobuf网属性(尽管后者提供对一些特定的序列点,如继承和数字布局更多的控制)。
前碟马克运行在这里,并得到巨大的起伏,让我指出protobuf.net。