Gegeben eine Methode DoSomething
die eine (parameterlose) Funktion annimmt und sie auf irgendeine Weise verarbeitet. Gibt es einen besseren Weg, um die "Überladungen" für Funktionen mit Parametern als das Schnipsel unten erstellen?
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);
}
1 Stimmen
Haben Sie diesen Blogbeitrag gelesen? http://mikehadlow.blogspot.com/2008/03/currying-in-c-with-oliver-sturm.html
1 Stimmen
Hier sind ein paar Beiträge, die interessant sein könnten, wenn Sie versuchen, Curry in C #: blogs.msdn.com/wesdyer/archive/2007/01/29/ diditwith.net/2007/10/23/…
0 Stimmen
+1 für den Wesdyer-Link - Sie erhalten ein wirklich solides Verständnis für einige weniger verständliche Konzepte, wenn Sie auch den zugehörigen Fibonacci-Beitrag lesen: blogs.msdn.com/b/wesdyer/archive/2007/02/02/
0 Stimmen
Msdn-Links sind kaputt.