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?

Respuestas a la pregunta(7)

Su respuesta a la pregunta