Как я могу определить, должен ли я расширять один из моих интерфейсов с помощью IDisposable или реализовать IDisposable для класса, реализующего мой интерфейс?
У меня есть интерфейс, который не требует каких-либо внешних ресурсов, кроме одной конкретной реализации. Мои параметры выглядят так:
1) Внедрить IDisposable на интерфейс, требующий реализации всех реализаций Dispose, даже если это пустой метод.
-или -
2) Внедрить IDisposable только для классов, у которых есть ресурсы, которые необходимо утилизировать. Это вызовет проблемы с "использованием", потому что мой объект создан из factory, и поэтому весь восходящий код работает против интерфейса. Поскольку интерфейс не связан с IDisposable, "использование" не видит метод Dispose. Однако я мог бы привести результат factory к реализации; однако, что затем информирует потребителя о реализации, нарушая назначение интерфейсов.
Любые идеи относительно лучших практик?