C# 组合函数<;Foo,object>;和行动<;对象>;

C# 组合函数<;Foo,object>;和行动<;对象>;,c#,.net,delegates,C#,.net,Delegates,我有一个Func和Action,我想把它们组合成Action,它把我的Func和Action组合成一个Action,Func的结果传递给Action。有没有一种简单的方法可以做到这一点 我能想到的最普遍的方法是这样的: Action<T1> Combine<T1, T2>(Func<T1, T2> func, Action<T2> action) { return x => action(func(x)); } Action组合(F

我有一个
Func
Action
,我想把它们组合成
Action
,它把我的Func和Action组合成一个Action,Func的结果传递给Action。有没有一种简单的方法可以做到这一点

我能想到的最普遍的方法是这样的:

Action<T1> Combine<T1, T2>(Func<T1, T2> func, Action<T2> action)
{
    return x => action(func(x));
}
Action组合(Func-Func,Action-Action)
{
返回x=>action(func(x));
}
用法:

Func=x=>x;
Action=Console.WriteLine;
动作结果=联合(func,动作);
结果(新Foo());
Func<Foo, object> func = x => x;
Action<object> action = Console.WriteLine;

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

result(new Foo());