Determinar si IDisposable debe extender una interfaz o implementarse en una clase que implementa dicha interfaz
¿Cómo puedo determinar si debo extender una de mis interfaces con IDisposable o implementar IDisposable en una clase que implementa mi interfaz?
Tengo una interfaz que no necesita disponer de ningún recurso externo, a excepción de una implementación en particular. Mis opciones parecen ser:
1) Implementar IDisposable en la interfaz que requiere que todas las implementaciones implementen Dispose, aunque solo sea un método vacío.
-o-
2) Implementar IDisposable solo en las clases que tienen recursos que necesitan ser eliminados. Esto causará problemas con el "uso" porque mi objeto se crea a partir de una fábrica y, por lo tanto, todo el código en sentido ascendente funciona contra la interfaz. Dado que la interfaz no está vinculada a IDisposable, "utilizando" no ve el método de Disposición. Sin embargo, podría lanzar el resultado de fábrica a la implementación; sin embargo, eso hace que el consumidor esté al tanto de la implementación, anulando el propósito de las interfaces.
¿Alguna idea sobre las mejores prácticas?