[英]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.