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