我有一组静态“枚举”类,用于保存有意义的变量名以表示在输入文件上收到的无意义代码值。这是一个例子。使用反射获取类型的静态字段值
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。谢谢。 – 2009-06-02 14:55:36
在VB中提出一个问题,我会尝试在VB中回答它。有时它会出错,但在这种情况下,它不是太难:) – 2009-06-02 14:59:37