Declare IDisposable para a classe ou interface?
A partir da situação seguinte:
<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>
A classe SampleA deve implementar a interface IDisposable para liberar recursos. Você poderia resolver isso de duas maneiras:
1. Adicione a interface necessária à classe SampleA:
<code>public class SampleA : ISample, IDisposable { // has some (unmanaged) resources that needs to be disposed } </code>
2. Adicione-o à interface ISample e force as classes derivadas a implementá-lo:
<code>public interface ISample : IDisposable { } </code>
Se você colocá-lo na interface, forçará qualquer implementação a implementar IDisposable, mesmo que eles não tenham nada para descartar. Por outro lado, é muito claro que a implementação concreta de uma interface requer um bloco de descarte / uso e você não precisa converter como IDisposable para limpeza. Pode haver mais alguns prós / contras em ambos os sentidos ... por que você sugeriria usar um caminho preferido para o outro?