Sté*_*écy 26 .net c# serialization protocol-buffers protobuf-net
试图让我的思绪围绕谷歌protobuf.我在C#中发现了一些protobuf的实现,但它们似乎缺少一个功能:能够从使用属性修饰的现有C#类自动生成.proto文件.
我想这样做而不是从.proto文件中自动生成的C#类的原因是因为我已经在我的项目中定义了C#类,我不想复制它们只是为了满足ProtoBuf.
有没有人遇到过这种情况?
更新
这可能只是装饰一个C#类而不是使用.proto文件来使用protobuf吗?
Mar*_*ell 32
好消息; 您所描述的(具有现有的C#类)是protobuf-net的预期用例.所有.proto的东西("protogen",VS插件等)都是作为事后添加的.protobuf-net的核心不了解它们或关心它们.
协议缓冲区定义了在实现之间共享的DSL(.proto,如你所提到的),并且(有时)用于代码生成.当我第一次编写protobuf-net时,代码生成方面并不是我最关心的问题 - 只是.NET开发人员通常对"先实现"而不是"合同优先"感到内疚(包括我自己).
因此,protobuf-net 不需要.proto文件来工作; 属性类足以明确地序列化/反序列化.只是使用Serializer.Serialize,.Merge和.Deserialize(等).
那说; 它确实包括一些非常欠发达和实验性的支持:
string proto = Serializer.GetProto<YourType>();
Run Code Online (Sandbox Code Playgroud)
这远非完整,但可能适用于简单类型.如果您遇到某些特定情况,请告诉我(添加评论或记录问题).然而; 大多数时候,对.proto感兴趣的人会首先编写.proto 并从那里开始工作.
工作装饰类型的示例显示在项目主页上 ; 您是否使用WCF属性,xml属性或protobuf-net属性完全取决于您(尽管后者提供了对某些特定序列化点的更多控制,例如继承和数字布局).
| 归档时间: |
|
| 查看次数: |
14193 次 |
| 最近记录: |