Отражение: вызов метода, передача делегата в качестве параметра. - PullRequest
2 голосов
/ 26 октября 2011

У меня есть интерфейс, реализованный в классе Host, который выглядит следующим образом:

void Method1(Action<Args1> action1, Action<Args1> action2);

и затем у меня есть следующие методы для action1 и action2.

private void Action1(Args1 obj)
{
//...
}

private void Action2(Args1 obj)
{
//...
}

Используя отражение, как мне вызвать его и передать методы Action1 и Action2?

1 Ответ

5 голосов
/ 26 октября 2011
//here you pass the methods Action1 and Action2 as parameters
//to the delegates - if you need to construct these by reflection
//then you need to reflect the methods and use the
//Delegate.CreateDelegate method.
var param1 = new Action<Args1>(Action1);
var param2 = new Action<Args1>(Action2);
//instance of Host on which to execute
var hostInstance = new Host();
var method = typeof(Host).GetMethod("Method1", 
  BindingFlags.Public | BindingFlags.Instance);

method.Invoke(hostInstance, new object[] { param1, param2 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...