.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)
{
}
答案 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
虽然最近看起来并不活跃。