当方法名包含在字符串中时调用该方法



假设我有一个页面测试。与test.aspx.vb.

Test.aspx.vb包含一个类名"TestClass"。在这个类中我有method1() method2()和method3()

我需要能够调用其中一个方法,但我不能硬编码,要执行的方法来自一个字符串。

我不能做

Select Case StringContainingTheNameOfTheDesiredMethod
    Case "Method1" 
        Method1()
    Case "Method2"
       Method2()
end case

.

我可以找到如何做反射(我跟随那个例子)。我的问题是这些方法可能需要与test交互。但是当我使用.invoke时,它似乎创建了一个新的线程或上下文以及任何对test的引用。Aspx变为null(设置label1)。Text = "something"将生成一个空引用,但是直接调用method1(不调用)将更新label1。文字很好。

有解决办法吗?有人能给我一些建议吗?

您需要将Test page的实例传递给Invoke方法(因此您调用它on the object)。抱歉c#代码;-)

MethodInfo method = typeof(TestPage).GetMethod(StringContainingTheNameOfTheDesiredMethod);
method.Invoke(this, null);
    Dim xAssembly As Assembly = Assembly.GetExecutingAssembly()
    Dim xClass As Object = xAssembly.CreateInstance("Paradox.Intranet2.ManageUsers", False, BindingFlags.ExactBinding, Nothing, New Object() {}, Nothing, Nothing)
    Dim xMethod As MethodInfo = xAssembly.GetType("Paradox.Intranet2.ManageUsers").GetMethod("TestCallFromString")
    Dim ret As Object = xMethod.Invoke(Me, New Object() {})

相关内容

  • 没有找到相关文章