私は入力ファイルで受け取った無意味なコード値を意味のある変数名として保持するために静的な "列挙"クラスを用意しています。ここに例があります。リフレクトを使用して型の静的フィールド値を取得する
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
というメソッドがあります。それは危険に見えます。それは私が探しているものを私に与えるだろうか?他のアイデア?
ちょっと、私のためにVBに入れてください。決してnullを渡すことは考えられませんでした。ありがとう。 –
VBで質問してください。私はVBで答えようとします。時々それは間違っていますが、この場合はそれほど難しくありません:) –
JSの事実:Jon SkeetはユニバーサルILで彼の答えを計算し、それを適切なソースコードに変換します... –