我从 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 命名空间。