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

本文关键字:解释 注入 于依赖 依赖 | 更新日期: 2023-09-27 18:02:30

我正在浏览这篇关于依赖注入的文章http://www.asp.net/web-api/overview/advanced/dependency-injection

Unity Container from Microsoft.

有几件事对我来说没有意义

例如,在 行之后
  public ProductsController(IProductRepository repository)

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

  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传递对象到一个控制器的构造函数?

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

你回答了自己的问题:

这是可能通过注册iproductrerepository接口与Unity?

是的。

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

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