Recipientes IOC e IDisposable

Foi recomendado que, ao usar um contêiner IOC, eu alterasse isso:

class Foobar: IFoobar, IDisposable {};

Nisso:

interface IFoobar: IDisposable{};
class Foobar : IFoobar{};

Gostaria de saber se está tudo bem, ou se resolve um problema e cria outro. Certamente resolve o problema em que desejo muito fazer isso:

using( IFoobar = myContainer.Resolve<IFoobar>() )
{ ... }

E agora eu sei que qualquer substituto não causará um erro em tempo de execução.

Por outro lado, agora todos os meus objetos simulados também devem lidar com IDisposable. Estou certo de que quase todas as estruturas de simulação tratam disso com facilidade? Se sim, então talvez isso não seja um problema.

Ou é? Existe outra pegada oculta que eu deveria prestar atenção? Certamente me ocorre que, se eu estivesse usando um contêiner do IOC, não para testes de unidade / zombaria, mas para uma verdadeira independência de serviço, isso pode ser um problema, porque talvez apenas um dos meus serviços trocáveis realmente lide com recursos não gerenciados (e agora eu ' (tenho que implementar operações vazias "IDispose" nesses outros serviços).

Mesmo nesta última edição, suponho que eu poderia viver com o objetivo de obter a capacidade de empregar a declaração "using", como demonstrado acima. Mas estou seguindo uma convenção popular ou estou perdendo uma solução totalmente diferente e melhor?

questionAnswers(1)

yourAnswerToTheQuestion