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,我同意。雖然在這種特殊情況下,動態調用委託的成本遠高於數組的分配。重點是輸入需要是一個'object []'。 –