【发布时间】:2012-11-24 21:43:40
【问题描述】:
我已从 WCF 服务导出 WSDL,并应用了单个 WSDL 参数。
有很多 qXX XML 命名空间,如以下片段中的类型和方法。
<xs:complexType name="PrincipalReference">
<xs:complexContent mixed="false">
<xs:extension base="q2:EntityReferenceBase">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="GetPermissions">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="principal" nillable="true" type="q1:PrincipalReference"/>
</xs:sequence>
</xs:complexType>
</xs:element>
PrincipalReference 类继承自 EntityReferenceBase。 PrincipalReference 和 EntityReferenceBase 都在同一个 C# 命名空间中,并且 DataContractAttribute 的 Namespace 字段的值相同。所以它们无论如何都在一个命名空间中。
我能否以某种方式摆脱这些 q1 和 q2 XML 命名空间? Web 服务旨在用于各种环境(平台/语言),因此 WSDL 越清晰,我就越快乐。
例如,作为一种解决方法,我可以停止使用继承,将基类内容复制到派生内容,从而解决 q2 问题,但我不知道如何处理应用于方法参数类型的 q1 命名空间。
【问题讨论】: