我有一个Class Foo,它有许多返回DataSet的方法。我希望能够将Func<DataSet> process
传递给一个方法,该方法可以在调用方法不知道的Foo实例上调用所请求的方法。像这样:
DataSet CommonMethod( Func<DataSet> process )
{
Foo foo = GetFooFromSomewhere( );
return foo.process( ); // <-- obviously, not this way!
}
用类似
的方式调用DataSet ds1 = CommonMethod( GetDataSetForX );
DataSet ds2 = CommonMethod( GetDataSetForY );
其中GetDataSetForX / Y是Foo的方法。
[注意:我不拥有Foo - 我无法对其进行更改。]
答案 0 :(得分: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();