2014-09-15 2 views
0

im пытается установить и перечислить и все, что есть в базе данных, это описание.set enum variable с описанием только vb.net

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

используя это с ошибками.

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

как я установить TCode только ДЕСК из T60? Я ничего не могу изменить о перечислении или базе данных.

+0

Вы не можете разобрать из описания к Enum без перебора, чтобы найти соответствие Описание. Если 'testcode.passed' был определен как' testcode.T60', ваш Enum.Parse должен работать. Затем описание может быть «передано» для использования в других местах, например, в отчетах, CBO и т. Д. Или вы можете написать TypeConverter – Plutonix

+0

, не уверен, что это так. tcode имеет тип testcode. У меня есть desc t60, и я хочу установить переменную testcode для передачи. – Sanbr

+0

вам нужно получить все описания в словаре и искать тот, который вам нужен; в значительной степени, что бы вы сделали в 'TypeConverter' – Plutonix

ответ

0

Для этого необходимо использовать reflection.

GetType> GetFields> 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()