恩,用反射的说。 给你一个例子: 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
给你一个例子:
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
我定义了一个类中有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)) 执行???
(函数中嵌套另外一个函数)