예제 #1
0
        /// <summary>
        /// Вызывает выполнение переданного делегата  с переданными значениями
        /// и выводит результат выполнения
        /// </summary>
        /// <param name="val1">тестируемый параметр1</param>
        /// <param name="val2">тестируемый параметр2</param>
        /// <param name="delegate">Делегат(ссылка на тестируемый метод)</param>
        public static void OperationResult(int?val1, int?val2, CalcMethodDelegate <int?> @delegate)
        {
            if (@delegate == null)
            {
                Console.WriteLine("Нечего вызвыать");
                return;
            }
            var delegateArray = @delegate.GetInvocationList();

            foreach (var del in delegateArray)
            {
                try
                {
                    string n1  = val1.HasValue ? val1.ToString() : "null";
                    string n2  = val2.HasValue ? val2.ToString() : "null";
                    var    res = @del.DynamicInvoke(val1, val2);
                    res = res == null ? "null" : res;
                    Console.WriteLine($"\nПопытка вызвать метод {del.Method.Name}.....\n");
                    Console.WriteLine($"Выполнена операция {@del.Method.Name}({n1}, {n2})={res}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"В {del.Method.Name} класса {del.GetType().Name} Возникло исключение {ex.Message}");
                }
            }
        }
예제 #2
0
        /// <summary>
        /// сравнение и арфиметика с null числами (когда одно - null, второе - не null) без HasValue
        /// Добавлены новые методы CompareV2 и SubstructV2 логика работы а тка же ответ описаны в их "summary"
        /// </summary>
        public static void Question8()
        {
            var calculator = new NullableCalculator();
            var del        = new CalcMethodDelegate <int?>(calculator.CompareV2);

            del += new CalcMethodDelegate <int?>(calculator.SubstructV2);
            NullableCalculator.OperationResult(1, 2, del);
            NullableCalculator.OperationResult(2, 1, del);
            NullableCalculator.OperationResult(null, 1, del);
            NullableCalculator.OperationResult(1, null, del);
            NullableCalculator.OperationResult(null, null, del);
        }