如何让svcutil为带有锯齿状数组的模式构建代理?

时间:2013-01-24 10:48:31

标签: wcf visual-studio-2008 xsd wsdl svcutil.exe

我们通过WCF SOAP服务发布业务层中包含的功能。 我们使用VS2008并使用可视化设计工具(XMLSpy)编写XSD并使用WSCF.blue生成WSDL

在我们的一个模式中,我们有一个实际上是锯齿状的数组:

<xs:element name="CriteriaGroups" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="CriteriaGroup" type="SearchCriterion" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

当我生成客户端时,对服务的所有调用都会失败,并显示以下错误:

Unable to generate a temporary class (result=1) error CS0030: Cannot convert type 'SearchCriterion[]' to 'SearchCriterion'

网上的常见解决方案是更改Reference.cs中的以下行:

public SiDemSearchCriterion[][] CriteriaGroups

要:

public SiDemSearchCriterion[] CriteriaGroups

所有来自该属性的引用。

但这没用,因为它可能会运行,但它不起作用。 它丢弃了大部分数据。 将所有内容设置为列表的设置无效。

如何在不更改架构的情况下执行此操作? 这是我们的架构,所以改变它不是很多问题。 我只是不想用“Microsoft Schema”方式设计它。

合同(WSDL + XSD)集应该是独立于平台的,并且基于通用标准。

所以:

  1. 有没有办法让SVCUTIL在不改变架构的情况下构建一个有效的客户端?
  2. 如何更改架构以使SVCUTIL开箱即用构建客户端?

0 个答案:

没有答案