Deklaruj IDisposable dla klasy lub interfejsu?
Począwszy od następującej sytuacji:
<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>
Klasa SampleA powinna implementować interfejs IDisposable do zwalniania zasobów. Możesz rozwiązać to na dwa sposoby:
1. Dodaj wymagany interfejs do klasy SampleA:
<code>public class SampleA : ISample, IDisposable { // has some (unmanaged) resources that needs to be disposed } </code>
2. Dodaj go do interfejsu ISample i wymuś implementację klas pochodnych:
<code>public interface ISample : IDisposable { } </code>
Jeśli umieścisz go w interfejsie, zmusisz każdą implementację do implementacji IDisposable, nawet jeśli nie mają nic do dyspozycji. Z drugiej strony bardzo wyraźnie widać, że konkretna implementacja interfejsu wymaga bloku dispose / using, a do czyszczenia nie trzeba rzucać jako IDisposable. W obu przypadkach może być więcej plusów / minusów ... dlaczego sugerowałbyś użycie jednego z preferowanych sposobów w stosunku do drugiego?