gpt4 book ai didi

c# - 是否可以通过序列化将属性应用于对象?

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:05 25 4
gpt4 key购买 nike

我在我们服务器的解决方案中有一个枚举值:

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 服务引用传递给客户端。

然后我在模型中显示枚举值。然而,我注意到 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,
}

我仍然希望能够描述我的枚举应该如何显示给最终用户。是否有可能做到这一点?我可以在反序列化后重新应用属性吗?

最佳答案

据我所知,您不能通过包含 WCF 服务引用的代码生成过程将您的属性传递给客户端。无法在客户端获取属性。

在为一个项目工作时,我做了一个非常有效的技巧。我在客户端项目中添加了该枚举文件作为引用文件(添加为链接),如下所示:

enter image description here

这样您就可以在客户端获得带有 Description 属性的 Enum 副本。如果您尝试更改它,您实际上是在更改 Server Enum 文件,因为它是一个引用文件,但神奇的是,我将在构建过程中作为您的客户端项目的一部分进行编译。这确实是一个很好的解决方法。

希望这对你有帮助:)

关于c# - 是否可以通过序列化将属性应用于对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12864102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com