有没有一种方法可以让函数返回具有可变数量参数的通用Action?

时间:2019-07-04 15:56:38

标签: c# functional-programming

我遇到的一种情况是,最好的解决方案似乎是让我的代码的某个区域确定可能的行为,并根据某些条件将适当的代码返回给其余代码。

类似的东西:

Action<int> foo = (int a) => a + 1;
Action<int, string> bar = (int a, string b) => b + " : " + a;

private Action GetTheRightAction(bool condition)
{
  if (condition)
     return foo;
  else
    return bar;
}

实际的代码显然要复杂得多,foobar在行为上有着更紧密的关系。 但是,总体思路仍然存在。 GetTheRightAction是否有一种通用的返回类型?

1 个答案:

答案 0 :(得分:-2)

尽管我很欣赏有关此方法潜在缺陷的评论,但我确实认为这是解决此特定问题的正确方法。

作为一般参考,我能够使用类似于下面所示的代码来使其工作。

public delegate void MyFunction(params object[] arguments);
MyFunction foo = (object[] arguments) => // check for arguments length and types here to direct the appropriate behaviour
MyFunc GetTheRightAction(bool condition) => // return between different MyFunc implementations as needed

虽然不像我期望的那样干净,但是可以解决问题。