我一直非常高兴地使用Ninject
很长一段时间,而且我非常喜欢它,但自ASP.NET 5
和MVC 6
发布以来,我面临着一个困难的选择。微软公司基本上走出了门户,透露了自己的依赖注入系统;据我所知,这是一个很多批评。但是我更大的问题在于它如何影响其他图书馆。继续ASP.NET MVC 6中的Ninject支持?
从another question I asked和other resources online,似乎Ninject不开箱与MVC 6.工作,虽然有一个“解决方案”的详细库Microsoft.Framework.DependencyInjection.Ninject and Ninject
的形式给出。这更加棘手,因为该库需要将https://www.myget.org/F/aspnetmaster/
添加到您的NuGet订阅源列表中。
我已经做了一些挖掘并找到了这个库的托管位置;它看起来很好,它似乎可以从我能说的很好,但有几件事情让我感到困扰。
- 库并没有真正出现在Ninject创
- 库埋藏很深的一个不起眼的仓库领导
- 实际Ninject资源在线别说
所以基本上,我非常担心这是某种形式的助手,对Ninject(甚至其他容器库)的支持正在消失。是否有一些隐藏的信息,我只是没有发现?
感谢有见地的文章,DI容器中内置的主要缺失是没有基于约定的映射。我必须将每个项目都包含到我的启动项目中,并映射依赖关系。这似乎是一个巨大的失误,除非我失去了一些东西。 – Spets
@Spets内置容器特别适用于ASP.NET本身的配置系统。所以这意味着您可以轻松地交换部分ASP.NET,并且第三方组件可以使用相同的配置模型。内置容器是围绕该模型构建的,这就解释了为什么某些功能没有实现。请注意,批量注册非常容易将自己写在容器之上,并且要成为一个引人注目的DI库,应首先实施其他更重要的功能。但是,不要滥用DI系统来注册自己的类型。 – Steven
有道理。 – Spets