我想在我的应用程序中消除 ifs,但我遇到了障碍。这是我的代码。我面临的问题是我接受了使用字典进行切换的想法,但是,在这种情况下,ifs 取决于 2 个不同的变量,加权和蜜蜂(这些我不能组合成一个变量)。所以最初是
if(weighted)
    return WeightedCalculator;
else if (bee)
    return BeeCalculator;
else
    return DefaultCalculator;
所以我将其更改为以下内容,这消除了ifs,但感觉不对。我确实知道该字典适用于 if 位于单个变量上的情况,但我觉得如果有 2 个或更多变量,则必须有一种使用它的方法。关于如何以干净的方式消除 ifs 的任何想法。这是此“模式”的链接
http://joelabrahamsson.com/invoking-methods-based-on-a-parameter-without-if-else-statements-in-c/
public class CalculateDayCountFractionFactory : ICalculateDayCountFractionFactory
{
    private static readonly Dictionary<string, Func<ICalculateDayCount>> _dayCountCalculators = new Dictionary<string, Func<ICalculateDayCount>>
                                                                                                    {
                                                                                                        {"weighted", new WeightedDayCountCalculator()},
                                                                                                        {"bee", new BeeDayCountCalculator()}
                                                                                                    };
    public ICalculateDayCount Create(bool weighted, bool bee)
    {
        var key = weighted
                      ? "weighted"
                      : (bee
                             ? "bee"
                             : "");
        return _dayCountCalculators.ContainsKey(key)
                   ? _dayCountCalculators[key]()
                   : DefaultDayCountCalculator();
    }
}