Пример #1
0
        /// <summary>
        /// Application main method
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            Console.WriteLine("*** Delegates example ***");
            InitCartWithDemoData();

            // Use Delegate method
            // Use Func method
            // Use Action method
            Console.WriteLine($"The total for the cart is: {_cart.GenerateTotal(SubTotalAlert, CalculateLeveledDiscount, AlertUser):C2}");
            Console.WriteLine();
            Console.WriteLine("=== Use anonymous methods ===");

            // Use anonymous Delegate
            // Use anonymous Func
            // Use anonymous Action
            decimal total = _cart.GenerateTotal(
                (subTotal) => Console.WriteLine($"The subtotal for cart 2 is: {subTotal:C2}"),
                (products, subTotal) =>
            {
                if (products.Count > 3)
                {
                    return(subTotal * 0.5M);
                }

                return(subTotal);
            },
                (message) => Console.WriteLine($"Cart 2 alert: {message}")
                );

            Console.WriteLine($"The total for cart 2 is: {total:C2}");

            Console.ReadKey();
        }
        /// <summary>
        /// Message button click command
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void messageButton_Click(object sender, EventArgs e)
        {
            decimal total = _cart.GenerateTotal(ShowSubTotalAlert, CalculateLeveledDiscount, ShowDiscountAlert);

            MessageBox.Show($"The total is {total:C2}");
        }