加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用带有ASP.NET 5的DI调用构造函数时解析依赖关系

发布时间:2020-12-15 22:13:59 所属栏目:百科 来源:网络整理
导读:Web上似乎充斥着如何在ASP.NET 5中使用DI的示例,但是其中一个示例没有显示如何调用构造函数并解决依赖关系. 以下只是众多案例中的一个: http://social.technet.microsoft.com/wiki/contents/articles/28875.dependency-injection-in-asp-net-vnext.aspx 但
Web上似乎充斥着如何在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中一样.

有人可以解释一下如何做到这一点?

解决方法

首先,您需要确保要构建的类已在DI容器中注册. (鉴于您的控制器示例,它可能已经归功于MVC框架.)

有几种方法可以做到这一点,其中最基本的方法是注册Transient.请注意,这需要在Startup类的ConfigureServices阶段完成.

services.AddTransient<ToDoController>();

一旦您注册了它,就可以像解决任何其他服务一样解决它:

app.ApplicationServices.GetRequiredService<ToDoController>();

有关更多信息,我建议使用Victor Hurdugaci’s blog on Dependency Injection in ASP.NET vNext.它是为alpha编写的,但它看起来仍然准确.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读