1
Я пытаюсь обернуть лямбда внутри Func<..>
, назначенной динамической, и вызвать ее динамически, но она выдает исключение из числа параметров.DynamicInvoke Число параметров не соответствует ожидаемому счету
MCVE
using System;
public class Test
{
public static void Main()
{
// your code goes here
try {
dynamic plus = new Func<long, long, long>((a, b) => a + b);
Type functionType = plus.GetType();
int arity = functionType.GetGenericArguments().Length - 1;
Console.WriteLine("Arity {0}", arity);
long[] parameters = new long[arity];
long result = plus.DynamicInvoke(parameters);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Исключение: Number of parameter does not match expected count.
Вместо литья и выделения совершенно новый массив, вероятно, лучше объявить 'parameters' как объект [], чтобы начать с –
@KevinGosse, я согласен. Хотя в этом конкретном случае стоимость динамического вызова делегата намного выше, чем распределение массива. Главное, что вход должен быть «объектом []». –