关于依赖注入的示例示例需要解释

时间:2016-08-14 10:12:30

标签: c# .net asp.net-mvc dependency-injection

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

它显示了Microsoft的Unity容器。

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

例如,在

行之后
  public ProductsController(IProductRepository repository)

以上是Controller的构造函数。我需要知道谁将repository传递给构造函数?通过向Unity注册IProductRepository接口,可以实现这一点吗?

  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将对象传递给控制器​​的构造函数?

1 个答案:

答案 0 :(得分:3)

你回答了自己的问题:

是通过向Unity注册IProductRepository接口来实现的吗?

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

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