示例#1
0
        /// <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());
            }
        }
示例#2
0
        /// <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);
            }
        }