【发布时间】:2009-06-02 14:51:41
【问题描述】:
我有一组静态“枚举”类,我用它们来保存有意义的变量名,以表示我在输入文件上收到的无意义的代码值。这是一个例子。
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 的方法。看起来很危险。这会给我我想要的东西吗?还有其他想法吗?
【问题讨论】:
标签: .net vb.net reflection