我们可以强制将枚举值序列化为整数吗?

时间:2020-03-06 14:33:46  来源:igfitidea点击:
Possible Duplicate:

  How do I serialize an enum value as an int?

大家好!

我想知道是否有一种方法可以强制将枚举值序列化为其整数值,而不是其字符串表示形式。

要将我们置于上下文中:
在严重依赖Web服务的Web应用程序中,我们正在为所有请求标头使用单个基类,而与请求类型无关。

我想在标头中添加一个Result字段,因此我们将有一个地方可以将有关操作返回到Web服务端的提示传递回调用应用程序。我们已经声明了这种枚举,但是由于我们有一些遗留应用程序在调用那些可能不知道这些枚举的Web服务,因此我想将这些值序列化为整数。

我们已经不得不使用[XmlElement(ElementName =" stringpresentationOfAttributeName")]来减少这些标头的长度,因为我们偶尔会超过IE的最大url长度,我想知道是否存在类似的Attributes来强制序列化将值枚举为整数。

有人听说过这样的属性吗?

一如既往,感谢帮助,
帕斯卡

解决方案

枚举确实序列化为int。但是通常,如果我们不喜欢将其中一个属性序列化为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; }
}

枚举不会默认序列化为int。
我正在使用XMLSerializer来序列化一个类,并且遇到与上述相同的问题。

(如果将MyThingForSerialization的范围更改为public,那么Matt Howells的示例似乎可以工作,但是我希望看到更好的实现,因为这会创建1个额外的公共属性)