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

仅使用vb.net描述设置枚举变量,vb.net,enums,Vb.net,Enums,我正在尝试设置和enum,数据库中只有描述 public enum testcode <Description("T60")> passed end enum 公共枚举测试代码 通过 结束枚举 使用这个,它会出错 tcode=CType(System.Enum.Parse(GetType(testcode)、tstcode)、testcode) 如何仅使用T60的desc设置tcode?我无法更改有关枚举或数据库的任何内容。您需要使用它才能工作 GetType>GetFie

我正在尝试设置和
enum
,数据库中只有描述

public enum testcode
   <Description("T60")> passed
end enum
公共枚举测试代码
通过
结束枚举
使用这个,它会出错

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

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

您需要使用它才能工作

GetType>GetFields>GetCustomAttributes

下面是一个使用
LINQ
的示例:

导入系统反射
公共枚举测试代码
通过
结束枚举
Dim tcode作为测试代码=(
从字段作为GetType(TestCode).GetFields()中的FieldInfo
从CType(field.GetCustomAttributes(GetType(DescriptionAttribute),False)中作为DescriptionAttribute的属性,DescriptionAttribute()
其中attribute.Description=“T60”
选择CType(field.GetValue(无),TestCode)
).FirstOrDefault()

如果不迭代查找匹配的描述,就无法从一个描述解析到另一个枚举。如果
testcode.passed
被定义为
testcode.T60
,则您的Enum.Parse应该可以工作。然后,描述可以“传递”到其他地方,如在报告、CBO等中使用……或者您可以编写一个TypeConverter,但这并不确定。tcode是testcode类型。我有t60的描述,我想设置testcode的变量为passed;与您在
TypeConverter中所做的差不多