Определение, должен ли IDisposable расширять интерфейс или быть реализован в классе, реализующем упомянутый интерфейс

Как я могу определить, должен ли я расширить один из моих интерфейсов с помощью IDisposable или реализовать IDisposable в классе, который реализует мой интерфейс?

У меня есть интерфейс, который не должен избавляться от каких-либо внешних ресурсов, за исключением одной конкретной реализации. Мои варианты кажутся следующими:

1) Реализуйте IDisposable на интерфейсе, требующем, чтобы все реализации реализовали Dispose, даже если это только пустой метод.

-или же-

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

Есть идеи относительно лучших практик?

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

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