Práctica recomendada: anular OnDispose (eliminación de bool) frente a evento Disposed en Component

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

  •  19-08-2019
  •  | 
  •  

Pregunta

En .Net, la clase Component expone un evento Disposed . También proporciona un miembro protegido OnDispose (eliminación de bool) .

¿Cuál es la mejor práctica para un componente personalizado que extiende Componente ? ¿Anular OnDispose (bool) o adjuntar un controlador de eventos a Disposed en la construcción?

Mi sensación es que uno debería anular OnDispose (bool) y sellar la clase.

¿Pensamientos?

¿Fue útil?

Solución

Los consumidores suelen utilizar los eventos para que puedan ser notificados cuando se producen. Si está ampliando el Tipo y necesita limpiar recursos, debe anular Dispose (eliminación de bool)

Spence tiene razón en parte sobre el controlador de eventos, se pueden asignar varios eventos, pero el problema es que no puede garantizar el orden en que se manejan los eventos.

Sellar la clase a menudo depende de lo que estés diseñando.

La regla FxCop también tiene buena información: http: //msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx

Otros consejos

Recomendaría anular el comportamiento, ya que un implementador de su componente tiene acceso al controlador de eventos y, como tal, podría cancelar el registro de la implementación de su eliminador por accidente. Creo que también puede necesitar hacer esto dependiendo de lo que esté haciendo su componente personalizado, ya que es posible que deba ejecutar sus tareas de eliminación antes de llamar al eliminador base si tiene objetos con estado o interfaces externas, etc.

Como escuché sobre este asunto, es un estándar .Net que los herederos anulan los métodos OnXxxxx de clase base y los usuarios manejan los eventos Xxxxx.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top