2014-11-14 2 views
0

У меня есть функция с подписью, как такPass отражение метод в качестве параметра к другому методу отраженного в качестве делегата

private void FunkA(string eventName, Action action) {} 
private void FunkB() {} 

, что я получить хотя отражения. Значение для действия также получается путем отражения, поэтому в моем коде мне нужно найти способ передать «MethodInfo» в качестве параметра в invoke.

MethodInfo miForFunkA; 
MethodInfo miForFunkB; 

miForFunkA.Invoke(sourceOfFunkA, new [] { 
    methodInfo.Name, 
    Delegate.CreateDelegate(typeof(Action), miForFunkB) 
}); 

Проблема в том, что я не могу создать список параметров, который имеет типы строк и делегатов. Как это должно быть передано?

ответ

0

Вы должны указать массив типа явно:

miForFunkA.Invoke(sourceOfFunkA, new object[] { 
    methodInfo.Name, 
    Delegate.CreateDelegate(typeof(Action), miForFunkB) 
}); 

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

+0

В более ранней итерации, где я пытался передать выражение лямбда на основании другого ответа, объект Object дал мне ошибку. Однако с делегатом он работает нормально. – QueueHammer

Смежные вопросы