У меня есть набор статических классов «перечисления», которые я использую для хранения значимых имен переменных для представления бессмысленных значений кода, которые я получаю во входном файле. Вот пример одного.
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
. Это выглядит опасно. Это даст мне то, что я ищу? Есть еще идеи?