我在 VB 中有一个类,其中包含一些代表我的安全角色的字符串名称的常量。我需要能够调用一个函数来返回每个常量值的字符串数组(或集合,或其他)。我将使用它来确保我的数据库角色表具有与编码到应用程序中的角色相同的角色。
Public Class Roles
Public Const Administrator = "Administrator"
Public Const BasicUser = "Basic User"
Public Const PowerUser = "Power User"
End Class
我正在寻找运行一个函数,即 ClassConstantsToStringArray(gettype(Roles)) ,它将返回给我“管理员”、“基本用户”、“高级用户”
我知道反射是可行的方法,只是我还不太了解如何使用它来获得我想要的东西。我在网上找到了一个函数,它可以将 FieldInfo 数组中的常量名称返回给我,但仍然没有足够的智能来为我工作。
Thanks.
好的,这是如何完成的。虽然这不是我一个人做的,http://weblogs.asp.net/whaggard/archive/2003/02/20/2708.aspx得到答案后,我只是通过 C# 到 VB.Net 转换器运行它。
Function GetStringsFromClassConstants(ByVal type As System.Type) As String()
Dim constants As New ArrayList()
Dim fieldInfos As FieldInfo() = type.GetFields(BindingFlags.[Public] Or _
BindingFlags.[Static] Or BindingFlags.FlattenHierarchy)
For Each fi As FieldInfo In fieldInfos
If fi.IsLiteral AndAlso Not fi.IsInitOnly Then
constants.Add(fi)
End If
Next
Dim ConstantsStringArray as New System.Collections.Specialized.StringCollection
For Each fi as FieldInfo in _
DirectCast(constants.ToArray(GetType(FieldInfo)), FieldInfo())
ConstantsStringArray.Add(fi.GetValue(Nothing))
Next
Dim retVal(ConstantsStringArray.Count - 1) as String
ConstantsStringArray.CopyTo(retval,0)
Return retval
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)