2011-03-29 4 views
1

DataSet을 반환하는 여러 메서드가있는 클래스 Foo가 있습니다. Func<DataSet> process을 호출하는 메소드가 알지 못하는 Foo의 인스턴스에서 요청 된 메소드를 호출 할 수있는 메소드에 전달할 수 있기를 원합니다. 이런 식으로 뭔가 :개체 인스턴스를 모른 채 Func 전달

DataSet CommonMethod(Func<DataSet> process) 
{ 
    Foo foo = GetFooFromSomewhere(); 
    return foo.process(); // <-- obviously, not this way! 
} 

GetDataSetForX/Y는 푸의 방법이 있습니다

DataSet ds1 = CommonMethod(GetDataSetForX); 
DataSet ds2 = CommonMethod(GetDataSetForY); 

같은 것을 함께했다.

[참고 : 나는 푸를 보유하고 있지 않습니다 - 나는 그것을 변경 내용을 적용 할 수는 없습니다.]

답변

4

이처럼 수행하여 간단한 예에서, 정직

DataSet CommonMethod(Func<Foo, DataSet> process) 
{ 
    Foo foo = GetFooFromSomewhere(); 
    return process(foo); 
} 

// call it like this: 
DataSet ds1 = CommonMethod(f => f.GetDataSetForX()); 
DataSet ds2 = CommonMethod(f => f.GetDataSetForY()); 

을하지만, 돈 혜택을 볼 수 없습니다. 그냥 "구식 방식"으로하지 않는 이유는 무엇입니까?

DataSet ds1 = GetFooFromSomewhere().GetDataSetForX(); 
DataSet ds2 = GetFooFromSomewhere().GetDataSetForY(); 
+0

감사합니다. 이 예제는 단순화 되었기 때문에 이점이 있습니다. CommonMethod에는 실제로 DataSet을 검색하기 전후에 복제 할 코드가 많이 있습니다. –

관련 문제