반응형
Action ()에서 값을 반환하는 방법은 무엇입니까?
이 질문에 대한 답변과 관련하여 DataContext를 Action ()에 전달하려면 action (db)에서 값을 어떻게 반환합니까?
SimpleUsing.DoUsing(db => {
// do whatever with db
});
다음과 더 비슷해야합니다.
MyType myType = SimpleUsing.DoUsing<MyType>(db => {
// do whatever with db. query buit using db returns MyType.
});
정적 메서드는 다음에서 이동해야합니다.
public static class SimpleUsing
{
public static void DoUsing(Action<MyDataContext> action)
{
using (MyDataContext db = new MyDataContext())
action(db);
}
}
에:
public static class SimpleUsing
{
public static TResult DoUsing<TResult>(Func<MyDataContext, TResult> action)
{
using (MyDataContext db = new MyDataContext())
return action(db);
}
}
이 답변은 주석에서 나왔기 때문에 코드를 제공 할 수있었습니다. 자세한 내용은 아래 @sll의 답변을 참조하십시오.
Func<T, TResult>
일반 대리자 를 사용할 수 있습니다 . ( MSDN 참조 )
Func<MyType, ReturnType> func = (db) => { return new MyType(); }
또한 반환 값을 고려하는 유용한 일반 대리자가 있습니다.
방법:
public MyType SimpleUsing.DoUsing<MyType>(Func<TInput, MyType> myTypeFactory)
일반 대리자 :
Func<InputArgumentType, MyType> createInstance = db => return new MyType();
실행 :
MyType myTypeInstance = SimpleUsing.DoUsing(
createInstance(new InputArgumentType()));
또는 명시 적으로 :
MyType myTypeInstance = SimpleUsing.DoUsing(db => return new MyType());
람다 또는 익명 메서드가 둘러싸는 범위의 변수를 닫을 수 있다는 사실을 활용할 수도 있습니다.
MyType result;
SimpleUsing.DoUsing(db =>
{
result = db.SomeQuery(); //whatever returns the MyType result
});
//do something with result
사용 Func<T>
보다는 Action<T>
.
Action<T>
acts like a void method with parameter of type T, while Func<T>
works like a function with no parameters and which returns an object of type T. If you wish to give parameters to your function, use Func<TParameter1, TParameter2, ..., TReturn>
.
참고URL : https://stackoverflow.com/questions/8099631/how-to-return-value-from-action
반응형
'programing tip' 카테고리의 다른 글
qtDesigner .ui 파일을 python / pyqt에 연결 하시겠습니까? (0) | 2020.10.23 |
---|---|
웹뷰의 초기 확대 / 축소 / 너비를 설정하는 방법 (0) | 2020.10.23 |
PopupWindow $ BadTokenException : 창을 추가 할 수 없습니다. 토큰 null이 유효하지 않습니다. (0) | 2020.10.23 |
d3에서 x 축 텍스트 회전 (0) | 2020.10.23 |
정규식의 문자 클래스 (대괄호)에서 점을 이스케이프해야합니까? (0) | 2020.10.22 |