类型定义如下:
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都是其他的人写的,已经写了很多了,所以最好不要这样。
很难解决的问题,需要分析 System.Xml.Serialization.XmlReflectionImporter.ImportEnumMapping 的代码寻找解决方法。
用强制转换(Int32)MyTestUnit.IIS
你在本地也做一个枚举,跟服务器一样的,然后通过他来转换下