GetField - Retrieving the value of a public field via reflection
' Return the value of the public field with the specified name,
' defined inside the obj object
' Note: requires Imports System.Reflection
'
' Example:
' Public TestField As String = "hello"
' ...
' MessageBox.Show(GetField(Me, "TestField", ""))
Function GetField(ByVal obj As Object, ByVal fieldName As String, _
ByVal defaultValue As Object) As Object
Try
' try with a field first
Dim fi As FieldInfo = obj.GetType().GetField(fieldName, _
BindingFlags.Instance Or BindingFlags.Public Or _
BindingFlags.NonPublic)
If Not fi Is Nothing Then
Return fi.GetValue(obj)
End If
' else, try with a property (VB implements many form fields as
' properties)
Dim pi As PropertyInfo = obj.GetType().GetProperty(fieldName, _
BindingFlags.Instance Or BindingFlags.Public Or _
BindingFlags.NonPublic)
If Not pi Is Nothing Then
Return pi.GetValue(obj, Nothing)
End If
Catch
End Try
' if property doesn't exist or throws
Return defaultValue
End Function