Может ли рефлексия каким-то образом узнать о перехватываемом исключении в создаваемом объекте - C#

Узнай цену своей работы

Формулировка задачи:

Есть класс покупок:
class PricePurchase : Purchase
    {
        private decimal fixedDiscount = 5000m;
 
        public PricePurchase(string name, decimal price, int quantity, decimal fixedDiscount)
            : base(name, price, quantity)
        {
            if (Price < fixedDiscount||fixedDiscount<=0)
                throw new Exception();
            this.fixedDiscount = fixedDiscount;
        }
И есть класс, которому нужно создавать класс покупок через рефлексию и в нём есть следующие строки:
try
                    {
                        return (Purchase) constructorDerived.Invoke(argsDerived);
                    }
                    catch (TargetInvocationException)
                    {
                        throw new CsvLineException(csvString, "Invalid discount. The one is more than a price or isn't positive");
                    }
В нём перехватывается исключение, вызванное классом покупки и вызывается собственный обработчик... Мне не нравится, что я изменил класс покупок и его исключение не перехватывается (раньше перехватывалось там же) - так вот, может ли рефлексия как-то узнать о обработанном исключении вызываемого объекта или мне всё равно придётся так или иначе изменить класс покупки, например, введя в обработчик событие, сигнализирующее рефлексии об исключении.
Поясню. Если просто обрабатывать исключение в классе покупок, то рефлексия всё равно создаст объект и он будет ошибочным... или может дублировать код исключения из класса покупок в рефлексии... да, похоже лучше уж так... китайский код против индусского (
А с другой стороны теоретически с чего это рефлексия должна знать - чем вызываются исключения создаваемого класса.

Решение задачи: «Может ли рефлексия каким-то образом узнать о перехватываемом исключении в создаваемом объекте»

textual
Листинг программы
throw new Exception("Invalid discount. The one is more than a price or isn't positive");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы