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