Usted está diseñando una interfaz IFoo
El diseño de una interfaz donde sólo algunas implementaciones requieren IDisposable
public interface IFoo
{
void Bar();
}
Digamos que hay cinco implementaciones de esta interfaz. Dos de esas implementaciones también deberían implementar IDisposable
ya que usan recursos no administrados. Desde la perspectiva de un llamante, sería más fácil si IFoo
implementara IDisposable
para que cualquier IFoo
se pueda envolver en un bloque using
, pero, por supuesto, algunas de las implementaciones se llenarían con los métodos vacíos Dispose()
. Simplemente curioso, ¿hay otras formas de hacer esto?
EDITAR
Su claramente mejor tener IFoo
implemento IDisposable
tomar cualquier responsabilidad de distancia desde el cliente. ¿Cómo sabrían cuándo y cuándo no verificar si es posible encontrar algo? Tendrían que hacer esto con todo lo demás. Todos parecen estar de acuerdo en que unos pocos métodos vacíos de Dispose() no dañarán a nadie.
Lo mejor que se puede sacar de esta pregunta es cómo verificar concisamente si algo puede desecharse con el "como" y "utilizando" en la respuesta de Marc Gravell.
Si la persona que llama solo conoce el 'IFoo', y algunas implementaciones de' IFoo' deben eliminarse, 'IFoo' debe heredar' IDisposable'. – Dyppl
Sí, lo mencioné en mi pregunta, era simplemente curioso sobre cualquier otro enfoque al problema para evitar implementaciones redundantes de IDisposable en clases concretas que no lo necesitaban. –
la única otra opción es verificar si el objeto implementa 'IDisposable' en el lado de la persona que llama, vea mi respuesta. – Dyppl