Вызов метода, когда имя метода содержится в строке - PullRequest
1 голос
/ 06 октября 2011

Допустим, у меня есть страница Test.aspx вместе с test.aspx.vb.

Test.aspx.vb содержит имя класса «TestClass». В этом классе у меня есть method1 (), method2 () и method3 ()

Мне нужно иметь возможность вызывать один из этих методов, но я не могу жестко его кодировать, метод, который нужно выполнить, происходит из строки.

Я не могу сделать

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

.

Что я мог найти, как поступить с отражением ( Я последовал этому примеру ). Моя проблема в том, что этим методам может потребоваться взаимодействие с test.aspx, но когда я использую .invoke, создается впечатление, что он создает новый поток или контекст, и любая ссылка на test.aspx становится нулевой (установка label1.text = "что-то" сгенерирует пустая ссылка, но прямой вызов method1 (без вызова) обновит label1.text просто отлично.

Есть ли решение? Кто-нибудь может дать мне несколько советов?

Ответы [ 2 ]

1 голос
/ 06 октября 2011
    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() {})
1 голос
/ 06 октября 2011

Вам нужно передать экземпляр тестовой страницы методу Invoke (поэтому вы вызываете его on the object). Извините за код C #; -)

MethodInfo method = typeof(TestPage).GetMethod(StringContainingTheNameOfTheDesiredMethod);
method.Invoke(this, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...