Объявить 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 для очистки. В обоих случаях может быть больше плюсов / минусов ... почему вы предлагаете использовать один способ предпочтительнее другого?

Ответы на вопрос(7)

Ваш ответ на вопрос