首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以将属性设置为Enum,但获得自定义字符串值?

是否可以将属性设置为Enum,但获得自定义字符串值?
EN

Stack Overflow用户
提问于 2019-04-28 08:23:49
回答 1查看 68关注 0票数 0

我希望将属性设置为Enum,以便只存储特定的值,但在获取属性时,我希望获取字符串值。

例如,存储Orange1的枚举,但得到"Orange 1“。

这个是可能的吗?如果没有,实现这一目标的最好方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-28 08:48:37

一种方法是使用描述属性。让我们创建一个Enum,如下所示:

代码语言:javascript
复制
Public Enum Fruit
    <Description("Orange 1")>
    Orange1 = 1
    <Description("Orange2")>
    Orange2 = 2
    <Description("Apple 1")>
    Apple1 = 3
End Enum

现在在一个模块中,添加以下扩展方法:

代码语言:javascript
复制
<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

然后,您可以这样做:

代码语言:javascript
复制
Dim f As Fruit = Fruit.Orange1
Console.WriteLine(f.GetEnumDescription())   ' Prints "Orange 1"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55885999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档