Melhores práticas: OnDispose Override (bool disposing) vs evento Disposed no Component
-
19-08-2019 - |
Pergunta
Na Net a classe Component
expõe um evento Disposed
. Ele também fornece uma OnDispose(bool disposing)
membro protegido.
O que é a melhor prática para um componente personalizado que estende Component
? Substituir OnDispose(bool)
ou anexar um manipulador de eventos para Disposed
em construção?
O meu sentimento é que se deve substituir OnDispose(bool)
e selar a classe.
Os pensamentos?
Solução
Normalmente os eventos são usados ??pelos consumidores para que eles possam ser notificado quando ocorrem eventos. Se você está estendendo o tipo e necessidade de limpar os recursos você deve substituir Dispose (bool disposing)
Spence é parcialmente certo sobre o manipulador de eventos, vários eventos podem ser atribuídos, mas a questão é que você não pode garantir a ordem em que os eventos são tratados.
Vedação da classe muitas vezes depende do que você está projetando.
A regra FxCop também tem algumas boas informações: http: //msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx
Outras dicas
Eu recomendaria substituindo o comportamento, como um implementador do seu componente tem acesso ao manipulador de eventos e, como tal, poderia cancelar sua implementação triturador por acidente. Eu acredito que você também pode precisar de fazer isso, dependendo do que o seu componente personalizado está fazendo, como você pode precisar para executar o seu descarte tarefas antes de chamar para o triturador base se tiver objetos stateful ou interfaces externas etc.
Como eu já ouviu falar sobre este assunto é um padrão Net que classe base herdeiros override OnXxxxx métodos e usuários manipular eventos Xxxxx.