大家好!
我想知道是否有办法强制将枚举值序列化为整数值,而不是字符串表示。
让你进入上下文: 我们在一个严重依赖Web服务的Web应用程序中使用我们所有请求标头的单个基类,与请求类型无关。
我想在标题中添加一个Result字段,因此我们可以将提示传递回调用应用程序,以了解操作在Web服务端的运行方式。我们已经声明了这样的枚举,但由于我们有遗留应用程序调用那些可能不知道这些枚举的Web服务,我想将这些值序列化为整数。
我们已经不得不通过使用[XmlElement(ElementName =“string representationOfAttributeName”)]减少这些标头的长度,因为我们偶尔会超过IE最大网址长度,我想知道是否有类似的属性要强制将枚举值序列化为整数。
有人听说过这样的属性吗?
一如既往,感谢您的帮助, 帕斯卡
答案 0 :(得分:6)
枚举确实序列化为整数。但一般来说,如果您不喜欢将某个属性序列化为XML的方式,那么您可以这样做:
[XmlIgnore]
public MyThing MyThing { get; set; }
[XmlElement("MyThing")]
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
public string MyThingForSerialization
{
get { return //convert MyThing to string; }
set { MyThing = //convert string to MyThing; }
}
答案 1 :(得分:4)
枚举不会默认为int序列化。 我正在使用XMLSerializer序列化一个类,我遇到了与上述相同的问题。
(如果你将MyThingForSerialization的范围改为公开,Matt Howells的例子似乎有用,但我希望看到一个更好的实现,因为这会创建一个额外的公共属性)