Declare IDisposable para la clase o interfaz?
A partir de la siguiente situación:
<code>public interface ISample { } public class SampleA : ISample { // has some (unmanaged) resources that needs to be disposed } public class SampleB : ISample { // has no resources that needs to be disposed } </code>
La clase SampleA debe implementar la interfaz IDisposable para liberar recursos. Podrías resolver esto de dos maneras:
1. Agregue la interfaz requerida a la clase SampleA:
<code>public class SampleA : ISample, IDisposable { // has some (unmanaged) resources that needs to be disposed } </code>
2. Agréguelo a la interfaz ISample y obligue a las clases derivadas a implementarlo:
<code>public interface ISample : IDisposable { } </code>
Si lo coloca en la interfaz, obliga a cualquier implementación a implementar IDisposable incluso si no tienen nada que disponer. Por otro lado, es muy claro ver que la implementación concreta de una interfaz requiere un bloque de disposición / uso y no es necesario convertirlo como IDisposable para la limpieza. Puede haber más ventajas y desventajas en ambos sentidos ... ¿por qué sugeriría usar un método preferido al otro?