Mam zestaw statycznych klas "wyliczeniowych", których używam do przechowywania znaczących nazw zmiennych w celu przedstawienia bezsensownych wartości kodu, które otrzymuję na pliku wejściowym. Oto przykład jednego.Uzyskiwanie wartości pól statycznych typu za pomocą refleksji
Public Class ReasonCodeValue
Private Sub New()
End Sub
Public Shared ReadOnly ServiceNotCovered As String = "SNCV"
Public Shared ReadOnly MemberNotEligible As String = "MNEL"
End Class
Chcę napisać metodę, która będzie akceptować typ jednej z tych klas statycznych i wartość ciągu i ustalić, czy wartość jest jedną z wartości pól statycznych. Wiem, jak uzyskać pola instancji dla określonego obiektu i wiem, jak uzyskać listę pól statycznych dla określonego typu; nie mogę się dowiedzieć, jak uzyskać wartości pól statycznych bez instancji. Oto, co mam do tej pory.
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
mam mogę zrobić klasy wyliczeniowe niestatyczny tylko tak mogę utworzyć instancję przekazać do FieldInfo.GetValue
wewnątrz mojej metody walidacji. Wolałbym, żeby moja klasa była taka, jak to możliwe.
Widzę metodę o nazwie GetRawConstantValue
. Wygląda niebezpiecznie. Czy to da mi to, czego szukam? Jakieś inne pomysły?
Hej, umieścisz go w VB dla mnie. Nigdy nie myślałem o przekazaniu wartości zerowej. Dzięki. –
Zadaj pytanie w VB, a spróbuję odpowiedzieć na to w VB. Czasami źle idzie, ale w tym przypadku nie było to zbyt trudne :) –
Kolejny fakt JS: Jon Skeet oblicza swoje odpowiedzi w uniwersalnym IL, a następnie tłumaczy na odpowiedni kod źródłowy ... –