private int DetermineArgumentCount(Function function) { for (int i = 0; i < 4; i++) { try { switch (i) { case 0: function.Calculate(); break; case 1: function.Calculate(1); break; case 2: function.Calculate(1, 1); break; case 3: function.Calculate(1, 1, 1); break; case 4: function.Calculate(1, 1, 1, 1); break; } return i; } catch (NotImplementedException) { } } return 0; }