Выполнить метод с аргументом Action <T>, используя Reflection - PullRequest
4 голосов
/ 01 апреля 2010

Как я могу создать метод Action для использования в качестве аргумента следующей функции?

public void When(Action<T> action) 
{
    if (internalValue != null)
        action(internalValue);
}

У меня есть MethodInfo для метода и тип параметра, например, так:

var methods = value.GetType().GetMethods();
MethodInfo mInfo = methods.First(method => method.Name == "When");
Type parameterType = (mInfo.GetParameters()[0]).ParameterType;

Но после этого я понятия не имею, как заставить фактический метод Action передать аргумент, я также не знаю, как определить тело метода Action.

1 Ответ

2 голосов
/ 01 апреля 2010
mInfo.Invoke(value,
    delegate(<TheRuntimeTypeOf T> aTinstance)
    {
        // do something on a T
    });

Но имейте в виду, что вы теряете универсальность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...