c# - 从 xsd 生成 proto 文件
问题描述
我有一个 xsd 文件,我想从中生成 proto 文件。
首先,我使用xsd.exe从 xsd 文件生成 C# 类,现在我想生成 proto 文件。
我知道我必须使用string proto = Serializer.GetProto<MyType>();
,但它似乎不起作用,因为自动生成的 C# 类没有用属性装饰。
有没有其他方法可以在不将这些属性添加到生成的代码中的情况下生成 proto 文件?
解决方案
protobuf-net 可以使用用[DataContract]
/修饰的类型[DataMember]
,只要[DataMember]
s 包含合适的Order = n
可选参数。从内存中,xsd 确实包含了这一点,但它Order
从零开始,而 protobuf-net 想要从一开始(因为零不是 protobuf 中的有效标记)。最简单的解决方法是创建第二个单独的文件以在 中添加补丁partial class
:
namespace TheSameNamespace {
[ProtoContract(DataMemberOffset = 1)]
partial class TheSameClass {}
}
这告诉 protobuf-net 向所有[DataMember(Order = n)]
标记添加一个。在那之后:它应该工作。
推荐阅读
- sql - 在存储过程中将字符串作为纯文本插入 SQL 查询
- applescript-objc - 如何将移动的应用程序重新启动到新位置?
- python - 将数据框列与列表值匹配,并附加数据框与匹配的行
- cmac - 这个 CMAC 计算有什么问题?
- bash - 使用 Bash 脚本循环遍历多个 cURL api 请求正文参数
- c - 为什么我在这段代码中得到一个巨大的整数?
- javascript - 如何在现有表中插入包含对象的 JSON 数组?
- java - 将 Java Method 对象转换为 Function 对象
- database - /var/lib/pgsql/db_log_archive 中的这个 Postgres 文件有什么用?
- python - 为什么 ttk.Menubutton 中的指示器没有消失?