网上似乎充斥着如何在ASP.NET 5中使用DI的示例,但其中一个示例没有显示如何调用构造函数并解决依赖关系。
以下只是众多案例中的一个: http://social.technet.microsoft.com/wiki/contents/articles/28875.dependency-injection-in-asp-net-vnext.aspx
但是如果我想要做以下事情会发生什么:
var todoRepository = app.ApplicationServices.GetRequiredService<ITodoRepository>();
ToDoController controller = new TodoController(todoRepository);
据推测,这可能会缩短为......
.Get<TodoController>()
就像在Ninject中一样。
有人可以解释一下如何做到这一点吗?
答案 0 :(得分:1)
首先,您要确保要构建的类已在DI容器中注册。 (鉴于你的控制器示例,它可能已经归功于MVC框架。)
有几种方法可以做到这一点,其中最基本的方法是注册Transient。请注意,这需要在ConfigureServices
课程的Startup
阶段完成。
services.AddTransient<ToDoController>();
一旦您注册了它,您就可以像解决任何其他服务一样解决它:
app.ApplicationServices.GetRequiredService<ToDoController>();
有关详细信息,我建议Victor Hurdugaci's blog on Dependency Injection in ASP.NET vNext。它是为alpha编写的,但它看起来仍然准确。