publicstaticclassSimpleUsing{publicstaticvoidDoUsing(Action<MyDataContext> action){
using (MyDataContext db =newMyDataContext())
action(db);}}
Zu:
publicstaticclassSimpleUsing{publicstaticTResultDoUsing<TResult>(Func<MyDataContext,TResult> action){
using (MyDataContext db =newMyDataContext())return action(db);}}
Diese Antwort entstand aus Kommentaren, damit ich Code bereitstellen konnte. Eine vollständige Ausarbeitung finden Sie in der Antwort von @ sll unten.
Action<T>verhält sich wie eine void-Methode mit Parametern vom Typ T, während sie Func<T>wie eine Funktion ohne Parameter funktioniert und ein Objekt vom Typ T zurückgibt.
Wenn Sie Ihrer Funktion Parameter zuweisen möchten, verwenden Sie Func<TParameter1, TParameter2, ..., TReturn>.
Sie können auch die Tatsache nutzen, dass ein Lambda oder eine anonyme Methode Variablen in ihrem umschließenden Bereich schließen kann.
quelle
Verwenden Sie
Func<T>
eher alsAction<T>
.Action<T>
verhält sich wie eine void-Methode mit Parametern vom Typ T, während sieFunc<T>
wie eine Funktion ohne Parameter funktioniert und ein Objekt vom Typ T zurückgibt.Wenn Sie Ihrer Funktion Parameter zuweisen möchten, verwenden Sie
Func<TParameter1, TParameter2, ..., TReturn>
.quelle