使用反射机制,利用Type的GetMethod(methodName)

解决方案 »

  1.   

    恩,用反射的说。
    给你一个例子:
    Form1中
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim frmType As Type
            Dim args() As String = {"form2"}
            Dim namedParas() As String = {"msg"}
            Dim defaultBinder As Binder = Type.DefaultBinder
            frmType = GetType(Form2)          '?取?型
            Dim frm As Form = frmType.Assembly.CreateInstance(frmType.FullName)    '?建?例
            Try
                '?用不?参的?例方法1
                frmType.InvokeMember("onGetMessage", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.InvokeMethod, Nothing, frm, Nothing)
                '?用?参的?例方法2
                frmType.InvokeMember("onGetMessage", _
                                     BindingFlags.OptionalParamBinding Or _
                                     BindingFlags.DeclaredOnly Or _
                                     BindingFlags.Public Or _
                                     BindingFlags.NonPublic Or _
                                     BindingFlags.Instance Or _
                                     BindingFlags.InvokeMethod, _
                                     Nothing, frm, args, Nothing, Nothing, namedParas)        Catch ex As Exception
                MsgBox(ex.Message)
            End Try        frm.Show()
        End Sub
    Form2中:
        Private Sub onGetMessage(ByRef msg As String)
            MsgBox(msg)
        End Sub    Private Sub onGetMessage()
            MsgBox("no args")
        End Sub
      

  2.   

    又遇到问题:
    我定义了一个类中有AAA,BBB两个成员函数
    public string AAA(arg1,arg2)
    {
      return processa(arg1,arg2);
    }
    public string BBB(v1,v2)
    {
      return processb(v1,v2);
    }若a=1,b=2,c=3,d=4
    我怎么把字符串"AAA(a, b+a*BBB(c,d))"  解析为函数AAA(a, b+a*BBB(c,d)) 执行???
    (函数中嵌套另外一个函数)
      

  3.   

    最好还是将其分成两个字符串,先计算x=BBB(c,d),然后再计算AAA(a,b+x)。
      

  4.   

    关键是如何识别字符串中的BBB 是一个函数???
      

  5.   

    关键是如何识别字符串中的BBB 是一个函数???呵呵,这就只有你代码自己去检索了。你可以通过反射得到这个对象的funtion,去检索字符串中是否含有function的name。