如何使用附加参数从另一个创建Action?

时间:2014-04-16 19:25:02

标签: c# .net

.Net Framework中是否有一个类可以包含一个Action和另一个参数,就像下面的例子中的EnhancedAction一样?

private void Test(string s)
{
  // I would like :
  // Method1(EnhancedAction.Create(Method2, s));

  // But I must write :
  Method1(i => Method2(i, s));
}

private void Method1(Action<int> myAction)
{
  myAction(1);
}

private void Method2(int i, string s)
{

}

2 个答案:

答案 0 :(得分:2)

您已经展示了如何编写代码;您只需要创建自己的类,该类具有确切的解决方案来实现您要求的方法:

class EnhancedAction
{
    public static Action<T1> Create<T1, T2>(Action<T1, T2> action, T2 parameter2)
    {
        return parameter1 => action(parameter1 , parameter2);
    }
}

虽然我没有看到如何写出来比直接使用lambda更容易。

答案 1 :(得分:0)

我发现Umbrella提供了我想要的东西:http://umbrella.codeplex.com/SourceControl/latest#Main/Src/Umbrella/Binding/CurryExtensions.cs

虽然最近看起来并不活跃。