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?

Respuestas a la pregunta(3)

Su respuesta a la pregunta