我有一个xsd文件,我想从中生成原始文件。
首先,我使用 xsd.exe 从xsd文件生成C#类,现在我想生成原始文件。
我知道我必须使用string proto = Serializer.GetProto<MyType>();
,但似乎无法正常工作,因为自动生成的C#类未使用属性修饰。
有没有其他方法可以在不将这些属性添加到生成的代码的情况下生成原型文件?
答案 0 :(得分:0)
protobuf-net可以使用以[DataContract]
/ [DataMember]
装饰的类型,只要 [DataMember]
包含合适的Order = n
可选参数。从内存来看,xsd确实包含此内容,但 却将Order
从零开始,因为protobuf-net希望从1开始(因为protobuf中的零不是有效标记)。最简单的解决方法是创建另一个单独的文件,以在partial class
中添加补丁:
namespace TheSameNamespace {
[ProtoContract(DataMemberOffset = 1)]
partial class TheSameClass {}
}
这告诉protobuf-net在所有[DataMember(Order = n)]
标记中添加一个。之后:它应该工作。