微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – xsd.exe – 架构到类 – 用于WCF

我已经创建了一个模式,作为我们公司和外部公司之间商定的接口.我现在正在创建一个WCF C#Web服务来处理该接口.

我运行了XSD实用程序,它创建了一个C#类.模式是在BizTalk中构建的,并引用其他模式,因此总共生成了超过15个类.

我将[DataContract}属性放在每个类的前面.
我是否必须在每个属性上放置[DataMember]属性
当我生成测试客户端程序时,代理没有任何这15个类的代码.

我们曾经在使用.asmx服务时使用这种技术,但不确定它是否与WCF一样.如果我们更改架构,我们会想要重新生成WCF类,然后我们每次都要使用所有[DataMember]属性重新调整它?是否有一个类似于XSD.exe的新工具可以更好地与WCF一起使用?

谢谢,

尼尔沃尔特斯

解决方案(埋在桑德斯之一回答/评论):

将XmlSerializerFormat添加到Interface定义:

[OperationContract]
    [XmlSerializerFormat]     // ADD THIS LINE 
    Transaction SubmitTransaction(Transaction transactionIn);

两个笔记:
1)在我这样做之后,我在我的代理(服务参考)测试客户端程序中看到了更多.xsds,但是我没有看到我的intellisense中的新类.
2)出于某种原因,在我对项目进行构建之前,我没有得到intellisense中的所有类(不确定原因).

解决方法

使用[DataContract]的类将序列化为非常有限的模式.例如,没有属性,只有元素.这是有意的,并且是为了性能和互操作性而完成的.

通常,您可能正在使用的那种模式可能要复杂得多.此类架构不适用于Data Contract Serializer.您将需要使用XML Serializer.

特别是,不要编辑由XSD.EXE创建的类.实际上,您永远不应该编辑生成代码,因为只要再次生成代码,您的编辑就会被删除.这些类应该已经拥有WCF使用它们所需的属性.

如果您按原样使用它们会发生什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐