在WINFROM项目中,如果我要打开窗体运用反射功能,具体是怎么做的?
每个页面上怎么写,是不是写一个公共的类来引用它?

解决方案 »

  1.   


        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