Объявить IDisposable для класса или интерфейса?
Исходя из следующей ситуации:
<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>
Класс SampleA должен реализовывать интерфейс IDisposable для освобождения ресурсов. Вы можете решить это двумя способами:
1. Add the required interface to the class SampleA:
<code>public class SampleA : ISample, IDisposable { // has some (unmanaged) resources that needs to be disposed } </code>
2. Add it to the interface ISample and force derived classes to implement it:
<code>public interface ISample : IDisposable { } </code>
Если вы помещаете его в интерфейс, вы заставляете любую реализацию реализовывать IDisposable, даже если им нечего располагать. С другой стороны, очень ясно видеть, что конкретная реализация интерфейса требует блока dispose / using, и вам не нужно приводить его как IDisposable для очистки. В обоих случаях может быть больше плюсов / минусов ... почему вы предлагаете использовать один способ предпочтительнее другого?