在什么时候是创建IOC容器中定义的类的实例



我最近参与了一个大型项目,我对Unity和ioc/di的经验很少,我正在寻找澄清在Unity容器中定义时如何创建实例的澄清。

给定以下代码;

//Unity Configuration

container.RegisterAsSingleton<IService, Service>();

//基本控制器类中的参考

private readonly IService _Service;
protected DefaultController(IService Service)
{
    _Service = Service;
}
protected string UseService(string id)
{
    return _Service.Method(id);
}

我需要使用类似的东西(在MVC解决方案中)初始化一个实例;

_Service = DependencyResolver.Current.GetService<IService>();

或第一次称为服务方法时会创建一个实例?

_Service.Method(id);

我试图找出如果需要的话,请弄清楚该代码的最佳地点。

我当然无法确定,但是通常使用DI的MVC项目以DI容器不仅用于创建iservice实例,而且还取决于iservice的默认传单。

MVC框架具有扩展点,您可以用来提供自己的施工逻辑,例如使用unity或Windsor等DI容器。如果您的项目已经使用了DI,则可能已经设置了。

因此,如果所有内容都正确接线(DI容器创建控制器,Iservice已注册到DI容器),则将ISERVICE依赖性注入到DefaultController构造器中。您不必做任何事情,当调用控制器方法时,应该已经创建了iservice。

最新更新