Type.InvokeMember в экземпляре - PullRequest
       2

Type.InvokeMember в экземпляре

3 голосов
/ 12 октября 2011

Как я могу вызвать InvokeMember для экземпляра?

Например, если я хочу вызвать метод MyMethod() с аргументом "argument string" экземпляра:

MyObject myInstance = MyObject.GetObject();

// ?

Я пробовал это:

myInstance.GetType().InvokeMember("MyMethod",
    BindingFlags.InvokeMethod | BindingFlags.Public,
    null,
    null,
    new Object[] { "argument string" })

, но он не работает, жалуясь, что MyObject не имеет MyMethod, и действительно, это метод экземпляра, а не метод класса, поэтому я думаю, что он пытается вызватьэто как статический метод.

Любая помощь?

Ответы [ 2 ]

6 голосов
/ 12 октября 2011

Ваша секунда null должна быть целью вызова:

myInstance.GetType().InvokeMember("MyMethod",
    BindingFlags.InvokeMethod | BindingFlags.Public,
    null,
    myInstance,
    new Object[] { "argument string" })

Подробнее см. в документации .

2 голосов
/ 12 октября 2011

Как насчет:

MethodInfo method = typeof(MyObject).GetMethod("MyMethod", BindingFlags.Public | BindingFlags.Instance);
method.Invoke(myInstance, new object[] { "argument string" });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...