Ustalenie, czy IDisposable powinien rozszerzyć interfejs lub zostać zaimplementowane w klasie implementującej wymieniony interfejs

Jak mogę ustalić, czy powinienem rozszerzyć jeden z moich interfejsów za pomocą IDisposable lub zaimplementować IDisposable w klasie, która implementuje mój interfejs?

Mam interfejs, który nie musi pozbywać się żadnych zewnętrznych zasobów, z wyjątkiem jednej konkretnej implementacji. Moje opcje wydają się być:

1) Zaimplementuj IDisposable na interfejsie wymagającym wdrożenia wszystkich implementacji Dispose, nawet jeśli jest to tylko pusta metoda.

-lub-

2) Zaimplementuj IDisposable tylko w klasach, które mają zasoby do usunięcia. Spowoduje to problemy z „używaniem”, ponieważ mój obiekt jest tworzony z fabryki, a zatem cały kod źródłowy działa przeciwko interfejsowi. Ponieważ interfejs nie jest powiązany z IDisposable, „używanie” nie widzi metody Usuń. Jednak mogłem oddać wynik fabryki do wdrożenia; to jednak uświadamia konsumentowi wdrożenie, pokonując cel interfejsów.

Jakieś pomysły dotyczące najlepszych praktyk?

questionAnswers(3)

yourAnswerToTheQuestion