给出像这样的webApi控制器:
public class MapsController : OwinApiController
{
private readonly IStorageAccountCache _mapCache;
public MapsController(IStorageAccountCache mapCache)
{
this._mapCache = mapCache;
this._mapCache = Configuration.DependencyResolver.GetService(typeof(IStorageAccountCache)) as IStorageAccountCache
}
}
与配置访问依赖项解析程序而不是从构造函数中获取值有何不同?
感兴趣的原因是,给定一个具有大量依赖关系的相当大的控制器和许多仅使用其中一部分的操作,我正在考虑在那些仅在特定操作中需要依赖关系的操作中使用Configuration.DependencyResolver.GetService
另外,如果正在执行Configuration.DependencyResolver.GetService
,是否已经根据构造控制器调用了开始范围,或者我应该首先执行开始范围。
答案 0 :(得分:1)
IoC.Resolve <>是服务定位器模式的示例。该模式强加了一些限制,这些限制是构造函数注入所不具备的:
在我看来,这些限制使Service Locator模式处于泥潭和依赖注入之间的中间位置:如果必须使用它,则很有用,但到目前为止并不是最佳选择。