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

C# 可以强制将枚举值序列化为整数吗?,c#,.net,xml-serialization,attributes,C#,.net,Xml Serialization,Attributes,可能重复: 大家好 我想知道是否有办法将枚举值序列化为其整数值,而不是字符串表示形式 要将您置于上下文中: 在严重依赖web服务的web应用程序中,我们为所有请求头使用一个基类,而与请求类型无关 我想在标题中添加一个结果字段,这样我们就有了一个位置,可以向调用应用程序传递有关web服务端操作如何进行的提示。我们已经声明了一个枚举,但是由于我们有调用那些可能不知道这些枚举的web服务的遗留应用程序,我想将这些值序列化为整数 我们已经不得不通过使用[XmlElement(ElementName=“

可能重复:

大家好

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

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

我想在标题中添加一个结果字段,这样我们就有了一个位置,可以向调用应用程序传递有关web服务端操作如何进行的提示。我们已经声明了一个枚举,但是由于我们有调用那些可能不知道这些枚举的web服务的遗留应用程序,我想将这些值序列化为整数

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

有人听说过这样的属性吗

一如既往,谢谢你的帮助,
Pascal

枚举确实序列化为整数。但一般来说,如果您不喜欢将某个属性序列化为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的示例似乎是可行的,但我希望看到更好的实现,因为这会创建一个额外的公共属性)

请注意,
MyThingForSerialization
必须是public。XmlSerializer不会查看私有字段/属性。@Miral我添加了
EditorBrowsable
Browsable
属性来解决这个问题。非常好。。。也为我工作,这样我也可以运行转换解释器,因为文件存储了访问级别。@matt Howells:Enum是否序列化为int?我想在不使用xmlenumattribute和不创建新公共属性的情况下实现这一点。