Public Function FindMethodByAssembly(ByVal assemblyName As String, _ ByVal className As String, _ ByVal methodName As String, _ ByRef arguments As Object()) As Object Dim asm As Assembly If System.IO.File.Exists(assemblyName) Then asm = Assembly.LoadFile(assemblyName) Else asm = Assembly.Load(assemblyName) End If Dim t As Type = asm.GetType(className, False, True) Dim minf As MethodInfo = t.GetMethod(methodName) Dim paraList As ParameterInfo() = minf.GetParameters() If paraList.Length > 0 Then If paraList(paraList.Length - 1).ParameterType.IsArray Then Dim arr As Array = Array.CreateInstance( _ paraList(paraList.Length - 1).ParameterType.GetElementType, _ arguments.Length - paraList.Length + 1) Array.Copy(arguments, paraList.Length - 1, arr, 0, arguments.Length - paraList.Length + 1) Array.Resize(arguments, paraList.Length) arguments(paraList.Length - 1) = arr End If End If If minf.IsStatic Then Return minf.Invoke(Nothing, arguments) Else Dim obj As Object = Activator.CreateInstance(t) Try Return minf.Invoke(obj, arguments) Finally DirectCast(obj, form).Dispose() End Try End If End Function
Public Function FindMethodByAssembly(ByVal assemblyName As String, _
ByVal className As String, _
ByVal methodName As String, _
ByRef arguments As Object()) As Object Dim asm As Assembly If System.IO.File.Exists(assemblyName) Then
asm = Assembly.LoadFile(assemblyName)
Else
asm = Assembly.Load(assemblyName)
End If Dim t As Type = asm.GetType(className, False, True) Dim minf As MethodInfo = t.GetMethod(methodName) Dim paraList As ParameterInfo() = minf.GetParameters() If paraList.Length > 0 Then
If paraList(paraList.Length - 1).ParameterType.IsArray Then
Dim arr As Array = Array.CreateInstance( _
paraList(paraList.Length - 1).ParameterType.GetElementType, _
arguments.Length - paraList.Length + 1) Array.Copy(arguments, paraList.Length - 1, arr, 0, arguments.Length - paraList.Length + 1) Array.Resize(arguments, paraList.Length) arguments(paraList.Length - 1) = arr End If
End If If minf.IsStatic Then
Return minf.Invoke(Nothing, arguments)
Else
Dim obj As Object = Activator.CreateInstance(t) Try
Return minf.Invoke(obj, arguments)
Finally
DirectCast(obj, form).Dispose()
End Try
End If
End Function