我希望将属性设置为Enum,以便只存储特定的值,但在获取属性时,我希望获取字符串值。
例如,存储Orange1
的枚举,但得到"Orange 1“。
这个是可能的吗?如果没有,实现这一目标的最好方法是什么?
发布于 2019-04-28 08:48:37
一种方法是使用描述属性。让我们创建一个Enum,如下所示:
Public Enum Fruit
<Description("Orange 1")>
Orange1 = 1
<Description("Orange2")>
Orange2 = 2
<Description("Apple 1")>
Apple1 = 3
End Enum
现在在一个模块中,添加以下扩展方法:
<Runtime.CompilerServices.Extension>
Public Function GetEnumDescription(item As [Enum]) As String
Return If(item.GetType().
GetField(item.ToString()).
GetCustomAttributes(GetType(DescriptionAttribute), False).
Cast(Of DescriptionAttribute)().
FirstOrDefault()?.Description, String.Empty)
End Function
然后,您可以这样做:
Dim f As Fruit = Fruit.Orange1
Console.WriteLine(f.GetEnumDescription()) ' Prints "Orange 1"
https://stackoverflow.com/questions/55885999
复制相似问题