Наилучшая практика:Переопределить OnDispose (удаление bool) по сравнению с удаленным событием в компоненте

StackOverflow https://stackoverflow.com/questions/456299

  •  19-08-2019
  •  | 
  •  

Вопрос

В .Net Component класс предоставляет Disposed событие.Он также предоставляет защищенного участника OnDispose(bool disposing).

Какова наилучшая практика для пользовательского компонента, который расширяет Component?Переопределение OnDispose(bool) или прикрепите обработчик событий к Disposed на строительстве?

Мое чувство таково, что один из них должен переопределить OnDispose(bool) и опечатайте класс.

Мысли?

Это было полезно?

Решение

Обычно события используются потребителями, чтобы они могли получать уведомления о возникновении событий.Если вы расширяете Тип и вам нужно очистить ресурсы, вам следует переопределить Dispose (удаление bool)

Спенс отчасти прав насчет обработчика событий, можно назначить несколько событий, но проблема в том, что вы не можете гарантировать порядок обработки событий.

Герметизация класса часто зависит от того, что вы разрабатываете.

В правиле FxCop также есть полезная информация: http://msdn.microsoft.com/en-us/library/ms244737 (ПРОТИВ 80).aspx

Другие советы

Я бы рекомендовал переопределить поведение, поскольку разработчик вашего компонента имеет доступ к обработчику событий и поэтому может случайно отменить регистрацию вашей реализации disposer.Я полагаю, что вам также может понадобиться сделать это в зависимости от того, что делает ваш пользовательский компонент, поскольку вам может потребоваться выполнить ваши задачи удаления перед вызовом базового средства удаления, если у вас есть объекты с отслеживанием состояния или внешние интерфейсы и т.д.

Насколько я когда-либо слышал об этом вопросе, это .Сетевой стандарт, согласно которому наследники переопределяют методы базового класса OnXxxxx, а пользователи обрабатывают события Xxxxx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top