Получение значений статического поля типа с использованием отражения
У меня есть набор статических классов «перечисления», которые я использую для хранения значимых имен переменных для представления бессмысленных значений кода, которые я получаю во входном файле. Вот пример одного.
Public Class ReasonCodeValue
Private Sub New()
End Sub
Public Shared ReadOnly ServiceNotCovered As String = "SNCV"
Public Shared ReadOnly MemberNotEligible As String = "MNEL"
End Class
Я хочу написать метод, который будет принимать тип одного из этих статических классов и строковое значение и определять, является ли значение одним из значений статического поля. Я знаю, как получить поля экземпляра для определенного объекта, и я знаю, как получить список статических полей для определенного типа; я не могу понять, как получить значения статического поля без экземпляра. Вот что у меня так далеко.
Public Function IsValidValue(ByVal type As Type, ByVal value As String) As Boolean
Dim fields = type.GetFields(BindingFlags.Public Or BindingFlags.Static)
For Each field As FieldInfo In fields
DoSomething()
Next
End Function
Я предполагал, что смогу сделать перечисляющие классы нестатичными, чтобы создать экземпляр для передачиFieldInfo.GetValue
внутри моего метода проверки. Я бы предпочел, чтобы мой класс был таким, какой я есть.
Я вижу метод под названиемGetRawConstantValue
, Это выглядит опасно. Это даст мне то, что я ищу? Есть другие идеи?