.NET VisualStudio wsdl多个xsd文件,重叠定义

时间:2014-02-20 19:31:19

标签: visual-studio xsd wsdl

我正在编写邮件服务的实现,我遇到了VisualStudio从wsdl文件自动生成的代码。 API包含相同对象的多个版本。对象在与特定版本对应的单独xsd文件中定义:

虽然每个xsd文件都定义了一个特定的命名空间,但复杂的元素名称在所有xsd文件中完全相同:

这会导致VisualStudio为表示复杂名称的类分配任意名称以保持唯一性:

如果查看xsd文件,OpenMailingGroup_13B会返回一个OpenMailingGroupResponse,而OpenMailingGroup_15A也会返回一个OpenMailingGroupResponse,而IMHO从定义的角度来看是可以的,因为它们是在单独的xsd文件中定义的,每个文件都有自己独立的命名空间。但是,当VisualStudio生成代理类时,它将OpenMailingGroup_13B的返回类型命名为OpenMailingGroupResponse2,将OpenMailingGroup_15A的返回类型命名为OpenMailingGroupResponse4。

当您更新Web服务引用并添加和删除新版本时(例如,现在存在新的OpenMailingGroup_17X),这将成为一个问题。问题是VisualStudio现在会为OpenMailingGroupResponse使用不同的命名。什么是OpenMailingGroupResponse4 for OpenMailingGroup_15A不能是OpenMailingGroupResponse9。这打破了我们的代码。

我们想到了一些可能的解决方案:

  1. 编写适配器类 - 但实际上有数百个类,这太痛苦了。
  2. 在变量定义中使用var以便不对类型进行硬编码,但是涉及大量嵌套(例如,复杂类型具有另一种具有另一种复杂类型的复杂类型等)。
  3. 不更新wsdl ...
  4. 所以,我的问题是:我可以告诉VisualStudio将生成的代码拆分成多个.NET命名空间,每个命名空间对应于它的xsd文件吗?也许一般的问题是:我能做些什么吗?

    提前致谢,

    Tiberiu

0 个答案:

没有答案