【发布时间】:2010-07-01 09:01:50
【问题描述】:
我正在为自己的学习/成长编写一个 IoC 容器。通常我会写如下内容:
using(DisposableObject dispObj = new DisposableObject())
{
UserRepository users = new UserRepository(dispObj);
// Do stuff with user.
}
将转向:
using(IDisposableObject dispObj = Container.Resolve<IDisposableObject>())
{
IUserRepository users = Container.Resolve<IUserRepository>();
// Do stuff with user.
}
当使用 IoC 时,如何抽象 DisposableObject 使其成为using 范围内使用的唯一实例?我试图弄清楚 Autofac 是如何做到的,但我不完全确定。
编辑:当使用using 范围实例化对象时,解析该类型的所有调用(在本例中为IDisposableObject)都应返回范围变量,而不是新实例。同样重要的是,在 using 语句和另一个 Resolve<IDisposableObject> 被调用之后,它会返回一个 new 实例。
【问题讨论】:
标签: c# dependency-injection inversion-of-control autofac