结合Func <foo,object =“”>和Action <object> </object> </foo,>

时间:2011-06-22 00:29:06

标签: c# .net delegates

我有一个Func<Foo, object>Action<object>,并希望将这些组合成Action<Foo>,它将我的Func和Action合并为一个Action,其中Func的结果传递给Action 。有一种直截了当的方法吗?

1 个答案:

答案 0 :(得分:6)

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

Action<T1> Combine<T1, T2>(Func<T1, T2> func, Action<T2> action)
{
    return x => action(func(x));
}

用法:

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

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

result(new Foo());