你能强制将枚举值序列化为整数吗?

Pin*_*pin 2 .net c# attributes xml-serialization

可能重复:
如何将枚举值序列化为int?

大家好!

我想知道是否有办法强制将枚举值序列化为整数值,而不是其字符串表示形式.

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

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

我们已经不得不通过使用[XmlElement(ElementName ="string representationOfAttributeName")]减少这些头的长度,因为我们偶尔会超过IE最大URL长度,我想知道是否有类似的属性来强制序列化枚举值为整数.

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

一如既往,感谢Pascal的帮助

Mat*_*lls 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; }
}
Run Code Online (Sandbox Code Playgroud)


Nik*_*kos 5

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

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