我遇到的一种情况是,最好的解决方案似乎是让我的代码的某个区域确定可能的行为,并根据某些条件将适当的代码返回给其余代码。
类似的东西:
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;
}
实际的代码显然要复杂得多,foo
和bar
在行为上有着更紧密的关系。
但是,总体思路仍然存在。 GetTheRightAction
是否有一种通用的返回类型?
答案 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
虽然不像我期望的那样干净,但是可以解决问题。