Наилучшая практика:Переопределить OnDispose (удаление bool) по сравнению с удаленным событием в компоненте
-
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.