.net的WebService返回自定义类型时,其中的Enum类型的属性,怎样返回它的值而不是名称?

类型定义如下:

public enum MyTestUnit
{
    IS = 1,
    IIS = 2
}

public class MyTestValue
{
    public MyTestUnit Unit { set; get; }
    public double Value { set; get; }
}

WebService的代码如下:

    [WebMethod]
    public MyTestValue GetMyValue()
    {
        MyTestValue MyNewValue = new MyTestValue();
        MyNewValue.Unit = MyTestUnit.IIS;
        MyNewValue.Value = 11.2;
        return MyNewValue;
    }

得到的XML如下:

<MyTestValue>
 <Unit>IIS</Unit>
 <Value>11.2</Value> 
</MyTestValue>

问题如下:

请问,要怎样才能让得到的XML中<Unit>IIS</Unit>一节里的内容不是“IIS”而是它对应的数字“2”?

已知的解决办法:


public enum MyTestUnit
{
    [System.Xml.Serialization.XmlEnum("1")]
    IS = 1,
    [System.Xml.Serialization.XmlEnum("2")]
    IIS = 2
}


不过,系统中的所有Enum都是其他的人写的,已经写了很多了,所以最好不要这样。


繁星coding
浏览 613回答 2
2回答

慕尼黑8549860

很难解决的问题,需要分析&nbsp;System.Xml.Serialization.XmlReflectionImporter.ImportEnumMapping 的代码寻找解决方法。

慕容森

你在本地也做一个枚举,跟服务器一样的,然后通过他来转换下
打开App,查看更多内容
随时随地看视频慕课网APP