【发布时间】:2012-10-03 13:35:28
【问题描述】:
我在我们服务器的解决方案中有一个枚举值:
public enum TaskStatus
{
//Description attribute modifies how an Enum's label is displayed when displayed via MVC.
[Description("Draft")]
Draft = 1,
[Description("Being Planned")]
BeingPlanned = 2,
[Description("Waiting For Change")]
WaitingForChange = 3,
[Description("In Progress")]
InProgress = 4,
[Description("Waiting For Customer Information")]
WaitingCustomerInformation = 5,
[Description("Cancelled")]
Cancelled = 6,
[Description("Completed")]
Completed = 7
};
这个枚举值被序列化并作为 WCF 服务引用传递给客户端。
然后我在模型中显示 Enum 值。然而,我注意到在序列化/反序列化过程中,Description 属性已被删除。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.450")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.cormant.com/cswebapi")]
public enum TaskStatus {
/// <remarks/>
Draft,
/// <remarks/>
BeingPlanned,
/// <remarks/>
WaitingForChange,
/// <remarks/>
InProgress,
/// <remarks/>
WaitingCustomerInformation,
/// <remarks/>
Cancelled,
/// <remarks/>
Completed,
}
我仍然希望能够描述我的枚举应该如何显示给最终用户。是否有可能做到这一点?反序列化后可以重新应用属性吗?
【问题讨论】:
-
请注意,剥离属性的不是序列化,而是第二个示例中创建代码的代码生成。
-
哦,我明白了。有趣的。希望不必使用不同的序列化引擎。
-
如果用户引用了从您的第一个示例编译的程序集,他们将获得属性。在您的情况下,这显然是不可能的,并且可能有某种方法可以让代码生成来保留属性,但我不知道。
标签: c# asp.net-mvc serialization