Невозможно наследовать от класса аргументов события: нет конструктора?

#c# #inheritance #webclient

#c# #наследование #webclient

Вопрос:

Я использую WebClient в приложении .NET 4.7.2 WinForms. Я вызываю UploadProgressChanged событие, которое получает UploadProgressChangedEventArgs объект. Я хотел бы добавить дополнительное свойство к аргументам события, поэтому я пытаюсь расширить UploadProgressChangedEventArgs as UploadProgressChangedExtEventArgs .

     public class UploadProgressChangedExtEventArgs : UploadProgressChangedEventArgs {
        public UploadProgressChangedExtEventArgs() { }
    
        public string Message { get; set; }
    }
 

Однако я получаю сообщение об ошибке «CS1729: ‘UploadProgressChangedEventArgs’ не содержит конструктора, который принимает 0 аргументов».

Согласно документации (и Object Browser, похоже, поддерживает это) UploadProgressChangedEventArgs , у него нет конструктора — например, вообще — хотя это базовый объект ProgressChangedEventArgs . Я пытался использовать base() для передачи аргументов ProgressChangedEventArgs конструктору, но затем я получаю ошибку «не содержит конструктор, который принимает 2 аргумента».

Я просто не могу наследовать от UploadProgressChangedEventArgs объекта? Это ошибка в .NET? Я упускаю что-то очевидное?

Комментарии:

1. У него есть конструктор, но он внутренний . Тип эффективно запечатан: вы не можете наследовать от него

2. Это очень плохо. Думаю, я поработаю с другим пользовательским обработчиком событий, который я вызываю из обработчика событий UploadProgressChanged.