Может ли рефлексия каким-то образом узнать о перехватываемом исключении в создаваемом объекте - 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");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д