Imports System.Collections.Generic Imports System.Reflection Imports System.Text Namespace ReflectionFacade ''' ''' Utility class for easy access to common System.Reflection features ''' Public NotInheritable Class Reflector Private Sub New() End Sub Private Const CommonFlags As BindingFlags = BindingFlags.[Public] Or BindingFlags.NonPublic ''' ''' ''' Public Shared Function CreateInstance(type As Type, ParamArray args As Object()) As Object Return Reflector.InvokeMember(type, Nothing, Nothing, Reflector.CommonFlags Or BindingFlags.CreateInstance Or BindingFlags.Instance, args) End Function ''' ''' ''' Public Shared Sub SetField(target As Object, fieldName As String, value As Object) Reflector.InvokeMember(target.[GetType](), target, fieldName, Reflector.CommonFlags Or BindingFlags.SetField Or BindingFlags.Instance, value) End Sub ''' ''' ''' Public Shared Function GetField(target As Object, fieldName As String) As Object Return Reflector.InvokeMember(target.[GetType](), target, fieldName, Reflector.CommonFlags Or BindingFlags.GetField Or BindingFlags.Instance) End Function ''' ''' ''' Public Shared Sub SetProperty(target As Object, propertyName As String, value As Object) Reflector.InvokeMember(target.[GetType](), target, propertyName, Reflector.CommonFlags Or BindingFlags.SetProperty Or BindingFlags.Instance, value) End Sub ''' ''' ''' Public Shared Function GetProperty(target As Object, propertyName As String) As Object Return Reflector.InvokeMember(target.[GetType](), target, propertyName, Reflector.CommonFlags Or BindingFlags.GetProperty Or BindingFlags.Instance) End Function ''' ''' ''' Public Shared Sub StaticSetField(type As Type, fieldName As String, value As Object) Reflector.InvokeMember(type, Nothing, fieldName, Reflector.CommonFlags Or BindingFlags.SetField Or BindingFlags.[Static], value) End Sub ''' ''' ''' Public Shared Function StaticGetField(type As Type, fieldName As String) As Object Return Reflector.InvokeMember(type, Nothing, fieldName, Reflector.CommonFlags Or BindingFlags.GetField Or BindingFlags.[Static]) End Function ''' ''' ''' Public Shared Sub StaticSetProperty(type As Type, propertyName As String, value As Object) Reflector.InvokeMember(type, Nothing, propertyName, Reflector.CommonFlags Or BindingFlags.SetProperty Or BindingFlags.[Static], value) End Sub ''' ''' ''' Public Shared Function StaticGetProperty(type As Type, propertyName As String) As Object Return Reflector.InvokeMember(type, Nothing, propertyName, Reflector.CommonFlags Or BindingFlags.GetProperty Or BindingFlags.[Static]) End Function ''' ''' ''' Public Shared Function CallMethod(target As Object, methodName As String, ParamArray args As Object()) As Object Return Reflector.InvokeMember(target.[GetType](), target, methodName, Reflector.CommonFlags Or BindingFlags.InvokeMethod Or BindingFlags.Instance, args) End Function ''' ''' ''' Public Shared Function StaticCallMethod(type As Type, memberName As String, ParamArray args As Object()) As Object Return Reflector.InvokeMember(type, Nothing, Nothing, Reflector.CommonFlags Or BindingFlags.InvokeMethod Or BindingFlags.[Static], args) End Function ''' ''' ''' Private Shared Function InvokeMember(type As Type, target As Object, memberName As String, flags As BindingFlags, ParamArray args As Object()) As Object Return type.InvokeMember(memberName, flags, Nothing, target, args) End Function End Class End Namespace