Кроме того, в зависимости от того, используете ли вы подобные системы, если вы используете контейнер IoC, он может пройти несколько уровней кода, прежде чем сервис будет возвращен вам через интерфейс, и это может быть не просто IDisposable в таком случае.
Возможно, интерфейс, который вы разрешили, не наследует от IDisposable, но фактический используемый класс обслуживания делает? Как справиться с этим? и т.д.