结合Func <Foo,object>和Action <object>

Joe*_*ano 3 .net c# delegates

我有一个Func<Foo, object>并且Action<object>想要将这些结合起来Action<Foo>,它将我的Func和Action组合成一个Action,其中Func的结果被传递给Action.有一种直截了当的方法吗?

dtb*_*dtb 6

我能想到的最通用的方法是这样的:

Action<T1> Combine<T1, T2>(Func<T1, T2> func, Action<T2> action)
{
    return x => action(func(x));
}
Run Code Online (Sandbox Code Playgroud)

用法:

Func<Foo, object> func = x => x;
Action<object> action = Console.WriteLine;

Action<Foo> result = Combine(func, action);

result(new Foo());
Run Code Online (Sandbox Code Playgroud)