ASMX Web服务Enum不保留其价值

时间:2012-09-03 15:57:22

标签: c# asp.net enums .net-2.0 asmx

我创建了一个包含枚举的网络服务,其值如下

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。

2 个答案:

答案 0 :(得分:7)

答案 1 :(得分:2)

发送到您的服务和从您的服务发送的值将是代表您的枚举的字符串,例如<DesignChoice>CustomerChoice</DesignChoice>

您服务中的此值应该是正确的,但由于任何客户端上的数字信息可能不同,客户端上的值可能是任何值。只要他们发回正确的字符串值,这就不重要了。如果客户端明确依赖于编号,那么客户端可能存在设计缺陷,或者当服务期望Enum时,您的服务期望调用的整数。