首页 新闻 会员 周边

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

0
悬赏园豆:50 [已解决问题] 解决于 2012-04-12 17:06

类型定义如下:

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都是其他的人写的,已经写了很多了,所以最好不要这样。

豌豆爸爸Aaron的主页 豌豆爸爸Aaron | 初学一级 | 园豆:114
提问于:2012-03-26 15:38
< >
分享
最佳答案
0

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

收获园豆:30
dudu | 高人七级 |园豆:31007 | 2012-03-26 17:49
其他回答(2)
0

用强制转换(Int32)MyTestUnit.IIS

收获园豆:10
artwl | 园豆:16736 (专家六级) | 2012-03-26 16:44
0

你在本地也做一个枚举,跟服务器一样的,然后通过他来转换下

收获园豆:10
az235 | 园豆:8483 (大侠五级) | 2012-03-26 18:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册