Declare IDisposable para a classe ou interface?
A partir da situação seguinte:
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
}
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:
public class SampleA : ISample, IDisposable
{
// has some (unmanaged) resources that needs to be disposed
}
2. Adicione-o à interface ISample e force as classes derivadas a implementá-lo:
public interface ISample : IDisposable
{
}
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?