繁体   English   中英

有关依赖关系注入的样本示例需要解释

[英]sample example about Dependency injection needs explanation

我正在阅读有关依赖项注入的文章http://www.asp.net/web-api/overview/advanced/dependency-injection

它显示了Microsoft的Unity Container。

有些事情对我来说没有意义

例如,以下行

  public ProductsController(IProductRepository repository)

上面是Controller的构造函数。 我需要知道谁将repository传递给构造函数? 通过在Unity中注册IProductRepository接口可以使ANd实现吗?

  public static void Register(HttpConfiguration config)
 {
    var container = new UnityContainer();
    container.RegisterType<IProductRepository, ProductRepository>(new HierarchicalLifetimeManager());
    config.DependencyResolver = new UnityResolver(container);

// Other Web API configuration not shown.
}

是否需要上述代码才能使MVC将对象传递给控制器​​的构造函数?

你是在自问自答:

通过在Unity中注册IProductRepository接口可以实现这一点吗?

是。

当您请求使用Unity解析类型时,容器将搜索公共构造函数。 如果构造函数需要某种实现(在您的情况下为IProductRepository ),则容器会在其注册内搜索所有必需参数的实现。 如果找到,它将解决该问题。 这是一个递归过程。

是的 您需要使用该容器注册IProductRepository的实现, IProductRepository使用该容器解析Controller的实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM