我创建了一个包含枚举的网络服务,其值如下
public enum DesignChoice
{
DesignerChoice = 1,
CustomerChoice = 2,
AdditionalDesign=3,
}
当我添加对客户网站的引用时,枚举值会更改,如下面的代码所示:
(int)DesignChoice.AdditionalDesign
返回2,但我希望它为3。
我已经尝试了序列化属性[System.Xml.Serialization.XmlTypeAttribute()]
,但没有运气。
服务的WSDL描述枚举如下:
<s:simpleType name="DesignChoice">
<s:restriction base="s:string">
<s:enumeration value="DesignerChoice" />
<s:enumeration value="CustomerChoice" />
<s:enumeration value="AdditionalDesign" />
</s:restriction>
</s:simpleType>
当我在VS的类名上按F12时,它会显示以下从元数据生成的代码:
public enum DesignChoice
{
DesignerChoice = 0,
CustomerChoice = 1,
AdditionalDesign = 2,
}
我正在使用Visual Studio 2005和.NET 2.0。
答案 0 :(得分:7)
答案 1 :(得分:2)
发送到您的服务和从您的服务发送的值将是代表您的枚举的字符串,例如<DesignChoice>CustomerChoice</DesignChoice>
。
您服务中的此值应该是正确的,但由于任何客户端上的数字信息可能不同,客户端上的值可能是任何值。只要他们发回正确的字符串值,这就不重要了。如果客户端明确依赖于编号,那么客户端可能存在设计缺陷,或者当服务期望Enum时,您的服务期望调用的整数。