Рекомендация: переопределить OnDispose (удаление bool) и событие Disposed для компонента - PullRequest
5 голосов
/ 19 января 2009

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

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

У меня такое чувство, что нужно отвергнуть OnDispose(bool) и запечатать класс.

Мысли

Ответы [ 3 ]

6 голосов
/ 19 января 2009

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

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

Печать класса часто зависит от того, что вы разрабатываете.

Правило FxCop также содержит полезную информацию: http://msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx

2 голосов
/ 19 января 2009

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

1 голос
/ 11 января 2010

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

...