gpt4 book ai didi

c# - 可移植类库中的 System.ComponentModel.DescriptionAttribute

转载 作者:IT王子 更新时间:2023-10-29 04:33:15 27 4
gpt4 key购买 nike

我在枚举中使用 Description 属性为枚举字段提供用户友好的名称。例如

public enum InstallationType
{
[Description("Forward of Bulk Head")]
FORWARD = 0,

[Description("Rear of Bulk Head")]
REAR = 1,

[Description("Roof Mounted")]
ROOF = 2,
}

使用一个很好的辅助方法可以很容易地访问它:

public static string GetDescriptionFromEnumValue(Enum value)
{
DescriptionAttribute attribute = value.GetType()
.GetField(value.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute), false)
.SingleOrDefault() as DescriptionAttribute;
return attribute == null ? value.ToString() : attribute.Description;
}

我需要将其转换为可移植类库,但它似乎无法访问 System.ComponentModel 库。当我尝试添加敬意时,VS 告诉我我已经引用了所有内容。

谢谢

最佳答案

由于 DescriptionAttribute 不可用于可移植类库,因此您需要使用另一个属性。可移植类库可用的命名空间 System.ComponentModel.DataAnnotations 提供属性 DisplayAttribute您可以改用它。

public enum InstallationType
{
[Display(Description="Forward of Bulk Head")]
FORWARD = 0,

[Display(Description="Rear of Bulk Head")]
REAR = 1,

[Display(Description="Roof Mounted")]
ROOF = 2,
}

你的方法需要改成

public static string GetDescriptionFromEnumValue(Enum value)
{
DisplayAttribute attribute = value.GetType()
.GetField(value.ToString())
.GetCustomAttributes(typeof(DisplayAttribute ), false)
.SingleOrDefault() as DisplayAttribute ;
return attribute == null ? value.ToString() : attribute.Description;
}

关于c# - 可移植类库中的 System.ComponentModel.DescriptionAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912697/

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