2011-03-29 8 views
1

私は、DataSetを返すメソッドがいくつかあるクラスFooを持っています。私はFunc<DataSet> processを、呼び出したメソッドが知らないFooのインスタンスに対して要求されたメソッドを呼び出すことができるメソッドに渡すことができるようにします。このような何か:オブジェクトインスタンスを知らないFuncを渡す

GetDataSetForX/YはFooのメソッドです
DataSet ds1 = CommonMethod(GetDataSetForX); 
DataSet ds2 = CommonMethod(GetDataSetForY); 

のようなもので呼び出さ

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

[注:私はFooのを所有していない - 私はそれに変更を加えることはできません]:

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()); 

しかし、正直なところ、あなたの簡単な例では、Iドン

答えて

4

はこのようにそれを実行します。利益を見ません。それは単に "古風なやり方"ではないのですか?

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

ありがとうございます。この例は単純化されているため、利点があります。 CommonMethodには実際には、DataSetの取得の前後に重複してコードがたくさんあります。 –

関連する問題