我试图在网上查找这一点,但所有 WSDL 示例似乎都没有真正解释我是否应该将事物标记为 WSDL 中的基本类型字符串或 int...
基本上,我正在尝试制作 WSDL,以便可以表示枚举。我心里已经有一个 C# 枚举,我想将它匹配到......
public enum MyEnum {
Item1 = 0,
Item2 = 1,
Item3 = 2,
SpecialItem = 99
}
我不确定我的 WSDL 应该是什么样子...我认为它是两个之一,但即使这样我也不是 100% 确定...
<wsdl:types>
<xsd:schema targetNamespace="http://www.mysite.com/MyApp"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<xsd:simpleType name="MyEnum">
<xsd:restriction base="xsd:int">
<xsd:enumeration value="0" />
<xsd:enumeration value="1" />
<xsd:enumeration value="2" />
<xsd:enumeration value="99" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wsdl:types>
OR
<wsdl:types>
<xsd:schema targetNamespace="http://www.mysite.com/MyApp"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<xsd:simpleType name="MyEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Item1" />
<xsd:enumeration value="Item2" />
<xsd:enumeration value="Item3" />
<xsd:enumeration value="SpecialItem" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wsdl:types>
枚举最终看起来就像它们的字符串表示形式。因此,正确的 wsdl 会将枚举呈现为:
<xs:simpleType name="MyEnum">
<xs:restriction base="xsd:string">
<xs:enumeration value="Item1" />
<xs:enumeration value="Item2" />
<xs:enumeration value="Item3" />
<xs:enumeration value="SpecialItem" />
</xs:restriction>
</xs:simpleType>
上面将自动为您序列化/反序列化为 MyEnum 枚举类型。如果您将枚举表示为 xsd:int 那么您最终将不得不手动来回转换它们。
您可以像这样引用架构中的枚举定义:
<xsd:complexType name="Class1">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="MyEnumProperty" type="MyEnum" />
</xsd:sequence>
</xsd:complexType>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)