W odniesieniu do odpowiedzi na to pytanie Przekazywanie DataContext do Action () , w jaki sposób mogę zwrócić wartość z akcji (db)?
SimpleUsing.DoUsing(db => {
// do whatever with db
});
Powinien być bardziej podobny do:
MyType myType = SimpleUsing.DoUsing<MyType>(db => {
// do whatever with db. query buit using db returns MyType.
});
Można również skorzystać z faktu, że metoda lambda lub metoda anonimowa może zamykać zmienne w otaczającym jej zakresie.
MyType result; SimpleUsing.DoUsing(db => { result = db.SomeQuery(); //whatever returns the MyType result }); //do something with result
źródło
Użyj
Func<T>
zamiastAction<T>
.Action<T>
działa jak metoda void z parametrem typu T, podczas gdyFunc<T>
działa jak funkcja bez parametrów i zwraca obiekt typu T.Jeśli chcesz nadać parametry swojej funkcji, użyj
Func<TParameter1, TParameter2, ..., TReturn>
.źródło