我最近参与了一个大型项目,我对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。