相关疑难解决方法(0)

IOC容器和IDisposable

我建议在使用IOC容器时,我应该改变这个:

class Foobar: IFoobar, IDisposable {};
Run Code Online (Sandbox Code Playgroud)

进入:

interface IFoobar: IDisposable{};
class Foobar : IFoobar{};
Run Code Online (Sandbox Code Playgroud)

我想知道这是否正常,或者它是否解决了一个问题并创造了另一个问题.它肯定解决了我非常想要这样做的问题:

using( IFoobar = myContainer.Resolve<IFoobar>() )
{ ... }
Run Code Online (Sandbox Code Playgroud)

现在我知道任何替代品都不会导致运行时错误.

另一方面,现在我的所有模拟对象也必须处理IDisposable.我是对的,大多数任何模拟框架都能轻松处理这个问题吗?如果是,那么也许这不是问题.

或者是吗?我应该注意另一个隐藏的问题吗?这当然发生,我认为如果我使用IoC容器没有单元测试/嘲讽,但对于真正的服务的独立性,那么这可能是因为也许只有我的交换服务,一个真正与非托管资源交易(和现在我是一个问题我必须在这些其他服务中实现空的"IDispose"操作).

即使是后一个问题,我想我可以忍受,为了获得使用上面演示的"使用"声明的能力.但是,我是遵循一个流行的惯例,还是我错过了一个完全不同的更好的解决方案?

idisposable ioc-container

9
推荐指数
1
解决办法
1385
查看次数

标签 统计

idisposable ×1

ioc-container ×1