/// <summary> /// Factory Method to get a calculator of the type requested /// </summary> /// <param name="calculatorType"></param> /// <returns></returns> public static Calculator CreateCalculator(CalculatorTypes calculatorType) { switch (calculatorType) { case CalculatorTypes.Subtraction: return(new SubtractionCalculator()); case CalculatorTypes.Multiplication: return(new MultiplicationCalculator()); case CalculatorTypes.Division: return(new DivisionCalculator()); default: return(new AdditionCalculator()); } }
/// <summary> /// Constructs a new <see cref="CalculatorComponentBuilder"/>. /// </summary> /// <param name="tag">A custom tag to identify the component or pass data.</param> public CalculatorComponentBuilder(string tag, CalculatorTypes type, IConfiguration configuration) : base() { var emojis = configuration.GetSection("customEmojis"); Emote emote = Emote.Parse(emojis["calculator"]); ButtonBuilder calculatorButton = type switch { CalculatorTypes.Crypto => new CryptoCalculatorButtonBuilder(tag, emote), CalculatorTypes.Dollar => new DolarCalculatorButtonBuilder(tag, emote), CalculatorTypes.Euro => new EuroCalculatorButtonBuilder(tag, emote), CalculatorTypes.Real => new RealCalculatorButtonBuilder(tag, emote), CalculatorTypes.FiatCurrency => new FiatCurrencyCalculatorButtonBuilder(tag, emote), CalculatorTypes.Venezuela => new VzlaCalculatorButtonBuilder(tag, emote), _ => null, }; if (calculatorButton != null) { WithButton(calculatorButton); } }