2009-01-19 4 views
5

En .Net, la clase Component expone un evento Disposed. También proporciona un miembro protegido OnDispose(bool disposing).Práctica recomendada: anular el evento OnDispose (bool disposing) vs Disposed en el componente

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

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

¿Pensamientos?

Respuesta

6

Generalmente eventos son utilizados por los consumidores para que puedan ser notificados cuando ocurren los eventos. Si está ampliando el Tipo y necesita limpiar los recursos, debe anular Dispose (bool disposing)

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

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

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

+0

+1 para el enlace de la regla FxCop –

2

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

1

Como he oído acerca de este asunto es un estándar Net que anulan herederos clase base OnXxxxx métodos y los usuarios manejar eventos de Xxxxx.

Cuestiones relacionadas