传递要在委托中使用的委托和参数以发挥作用

问题描述

我有一个方法想用作回调。让我们说如下:

public void TestCallback(int a,int b)
{ 
    Console.WriteLine(a + b);
}

现在假设我想将其作为参数传递给另一个方法,该方法采用与 TestCallback 签名匹配的委托。

public void TestMethodA(Action<int,int> paramFunc)
{
    TestMethodB(paramFunc);
}

反过来,假设 TestMethodA 将此委托传递给另一个函数,后者最终调用它:

public void TestMethodB(Action<int,int> paramFunc)
{
    paramFunc.Invoke(5,10);
}

现在,如果我想将另一个参数从 TestMethodA 传递给 TestMethodB`,该参数最终将用作委托的参数,该怎么办?这样做的最佳方法是这样的吗:

public void Main(string[] args)
{
    TestMethodA(TestCallback);
}

public void TestMethodA(Action<int,int> paramFunc)
{
    TestMethodB(paramFunc,10);
}

public void TestMethodB(Action<int,int> paramFunc,int paramForDelegate)
{
    paramFunc.Invoke(5,paramForDelegate);
}

或者像这样:

public void Main(string[] args)
{
    TestMethodA(TestCallback);
}

public void TestMethodA(Action<int,int> paramFunc)
{
    TestMethodB((a,b) => paramFunc(a,10));
}

public void TestMethodB(Action<int,20); // 20 here is just a placeholder and will not be passed to the delegate
}

使用第一种方法时,方法签名需要携带要在委托中使用的所有参数。例如,如果我有更多的参数要传递并且有更多的链式调用,你可以想象这会很快变得丑陋。

使用第二种方法可以使方法签名更清晰,但我认为这也使代码更难破译,我不得不使用实际上不会传递给它的参数来调用我的委托。

是否有更好的方法来实现我所描述的?也就是说,传递一个委托以及调用时要传递给它的一些参数?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)