C# Вызов делегата с универсальными типами времени выполненияC#

Место общения программистов C#
Anonymous
C# Вызов делегата с универсальными типами времени выполнения

Сообщение Anonymous »

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

Код: Выделить всё

var delegMethodType = typeof(Func).MakeGenericType(type1, type2, type3, returnType);
Как видите, я использую Func для представления Func. Работает отлично.
После этого я создаю своего делегата следующим образом:

Код: Выделить всё

var deleg = Delegate.CreateDelegate(delegMethodType, obj, methodInfo);
Где «delegMethodType» — это тип делегата, который я создал ранее, «obj» — это объект, который получает вызов, а «methodInfo» — это метод отражения для «obj». Это прекрасно работает.
Теперь мне нужно вызвать делегат, но поскольку «Delegate.CreateDelegate» возвращает базовый делегат, я не могу вызвать его с параметрами:

Код: Выделить всё

// due to this delegate was created in runtime VS.NET doesn't recognize
// that the delegate allows three parameters and returns a value
var result = deleg(val1, val2, val3);
Я могу использовать делегат с помощью «deleg.DynamicInvoke()», но это медленнее, чем вызов делегата с его параметрами.
Как я могу вызвать этот делегат с тремя параметрами и получить его возвращаемое значение?>

Подробнее здесь: https://stackoverflow.com/questions/698 ... eric-types

Вернуться в «C#»