开发者

Passing a Func without knowing the object instance

开发者 https://www.devze.com 2023-02-20 08:50 出处:网络
I have a Class Foo with a number of methods that return DataSet.I want to be able to pass a Func<DataSet> process into a method that can call the req开发者_如何学Gouested method on an instance o

I have a Class Foo with a number of methods that return DataSet. I want to be able to pass a Func<DataSet> process into a method that can call the req开发者_如何学Gouested method on an instance of Foo that the calling method doesn't know. Something like this:

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

called with something like

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

where GetDataSetForX/Y are methods of Foo.

[NOTE: I don't own Foo - I can't make changes to it.]


Do it like this:

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

But honestly, in your simple example, I don't see the benefit. Why not just do it the "old fashioned way"?

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

精彩评论

暂无评论...
验证码 换一张
取 消