【发布时间】:2011-01-24 08:33:18
【问题描述】:
我创建了一个架构,作为我们公司与外部公司之间商定的接口。我现在正在创建一个 WCF C# Web 服务来处理接口。
我运行了 XSD 实用程序,它创建了一个 C# 类。该架构是在 BizTalk 中构建的,并引用了其他架构,因此总共生成了超过 15 个类。
我将 [DataContract} 属性放在每个类的前面。
我必须将 [DataMember] 属性放在每个属性上吗?
当我生成一个测试客户端程序时,代理没有这 15 个类中的任何一个的任何代码。
我们曾经在使用 .asmx 服务时使用过这种技术,但不确定它是否能与 WCF 一样工作。如果我们更改架构,我们会想要重新生成 WCF 类,然后我们每次都必须使用所有 [DataMember] 属性重新装饰它?是否有类似于 XSD.exe 的更新工具可以更好地与 WCF 配合使用?
谢谢,
尼尔·沃尔特斯
解决方案(埋在 Saunders 答案/cmets 之一中):
将 XmlSerializerFormat 添加到接口定义中:
[OperationContract]
[XmlSerializerFormat] // ADD THIS LINE
Transaction SubmitTransaction(Transaction transactionIn);
两个注意事项: 1)在我这样做之后,我在我的代理(服务参考)测试客户端程序中看到了更多的.xsds,但是我没有在我的智能感知中看到新的类。 2) 出于某种原因,在我对项目进行构建之前,我没有得到智能感知中的所有类(不知道为什么)。
【问题讨论】: