【问题标题】:generate proto file from xsd从 xsd 生成 proto 文件
【发布时间】:2018-08-20 13:15:43
【问题描述】:
我有一个 xsd 文件,我想从中生成 proto 文件。
首先,我使用 xsd.exe 从 xsd 文件生成 C# 类,现在我想生成 proto 文件。
我知道我必须使用 string proto = Serializer.GetProto<MyType>(); 但它似乎不起作用,因为自动生成的 C# 类没有用属性装饰。
有没有其他方法可以生成 proto 文件而不将这些属性添加到生成的代码中?
【问题讨论】:
标签:
c#
xml
xsd
protobuf-net
【解决方案1】:
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)] 标记添加一个。之后:它应该可以工作。