Dado un método DoSomething
que toma una función (sin parámetros) y la maneja de alguna manera. ¿Hay una mejor manera de crear las "sobrecargas" para funciones con parámetros que el fragmento a continuación?Corrección adecuada en C#
public static TResult DoSomething<TResult>(Func<TResult> func)
{
//call func() and do something else
}
public static TResult DoSomething<T0, TResult>(
Func<T0, TResult> func,
T0 arg0)
{
return DoSomething(() => func(arg0));
}
public static TResult DoSomething<T0, T1, TResult>(
Func<T0, T1, TResult> func,
T0 arg0, T1 arg1)
{
return DoSomething(arg => func(arg, arg1), arg0);
}
public static TResult DoSomething<T0, T1, T2, TResult>(
Func<T0, T1, T2, TResult> func,
T0 arg0, T1 arg1, T2 arg2)
{
return DoSomething(arg => func(arg, arg1, arg2), arg0);
}
Aquí hay un par de publicaciones que pueden ser interesantes si está tratando de curry en C#: http://blogs.msdn.com/wesdyer/archive /2007/01/29/currying-and-partial-function-application.aspx http://diditwith.net/2007/10/23/BuildingFunctionsFromFunctionsPart2FunctionComposition.aspx –
¿Ha revisado esta publicación de blog? [http://mikehadlow.blogspot.com/2008/03/currying-in-c-with-oliver-sturm.html](http://mikehadlow.blogspot.com/2008/03/currying-inc-c- with-oliver-sturm.html) – rodbv
+1 para el enlace de wesdyer: obtendrá una comprensión realmente sólida de algunos conceptos menos entendidos si también lee la publicación de Fibonacci relacionada: http://blogs.msdn.com/b /wesdyer/archive/2007/02/02/anonymous-recursion-in-c.aspx – Jordan