¿Qué tal algunos métodos de ayuda como estos?
public static TResult InvokeWithParams<T, TResult>
(this Func<T[], TResult> func, params T[] args) {
return func(args);
}
public static TResult InvokeWithParams<T1, T2, TResult>
(this Func<T1, T2[], TResult> func, T1 arg1, params T2[] args2) {
return func(arg1, args2);
}
Obviamente, se podría aplicar esto para sobrecargas adicionales genéricas de Func
(así como Action
, para el caso).
Uso:
void TestInvokeWithParams() {
Func<string[], bool> f = WriteLines;
int result1 = f.InvokeWithParams("abc", "def", "ghi"); // returns 3
int result2 = f.InvokeWithParams(null); // returns 0
}
int WriteLines(params string[] lines) {
if (lines == null)
return 0;
foreach (string line in lines)
Console.WriteLine(line);
return lines.Length;
}
OK, lo retiro, se puede hacer, buena solución :) – Benjol