仅使用描述vb.net设置enum变量

时间:2014-09-15 13:36:02

标签: vb.net enums

我试图设置enum并且数据库中的所有内容都是描述。

public enum testcode
   <Description("T60")> passed
end enum

使用它,它会出错。

  

tcode = CType(System.Enum.Parse(GetType(testcode),tstcode),testcode)

如何仅使用T60的desc设置tcode?我无法改变枚举或数据库的任何内容。

1 个答案:

答案 0 :(得分:0)

您需要使用reflection来实现此目的。

  

GetType&gt; GetFields&gt; GetCustomAttributes

以下是使用LINQ的示例:

Imports System.Reflection

Public Enum TestCode
    <Description("T60")> Passed
End Enum

Dim tcode As TestCode = (
        From field As FieldInfo In GetType(TestCode).GetFields()
        From attribute As DescriptionAttribute In CType(field.GetCustomAttributes(GetType(DescriptionAttribute), False), DescriptionAttribute())
        Where attribute.Description = "T60"
        Select CType(field.GetValue(Nothing), TestCode)
    ).FirstOrDefault()