就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,访问帮助中心 /help/reopen-questions 以获得指导。
哪些 C#/.NET 依赖注入框架值得研究?
您对它们的复杂性和速度有何评价?
edit (不是作者提供的):IoC 框架的完整列表位于https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc :
温莎城堡 https://github.com/castleproject/Windsor - Castle Windsor 是同类最佳、成熟的控制反转容器,可用于 .NET 和 Silverlight
Unity https://github.com/unitycontainer/unity - 轻量级可扩展依赖注入容器,支持构造函数、属性和方法调用注入
Autofac https://github.com/autofac/Autofac - 令人上瘾的.NET IoC 容器
DryIoc https://github.com/dadhi/DryIoc - 简单、快速、功能齐全的 IoC 容器。
Ninject https://github.com/ninject/ninject - .NET 依赖注入器的忍者
春网 https://github.com/spring-projects/spring-net - Spring.NET 是一个开源应用程序框架,使构建企业 .NET 应用程序变得更加容易
Lamar https://jasperfx.github.io/lamar/ - 快速 IoC 容器,针对 ASP.NET Core 和其他 .NET 服务器端应用程序中的使用进行了高度优化。
光注入 https://github.com/seesharper/LightInject - 超轻量级 IoC 容器
简易注射器 https://github.com/simpleinjector/SimpleInjector - Simple Injector 是一个易于使用的 .NET 4+ 依赖注入 (DI) 库,支持 Silverlight 4+、Windows Phone 8、Windows 8(包括通用应用程序和 Mono)。
Microsoft.Extensions.DependencyInjection https://github.com/aspnet/DependencyInjection - ASP.NET Core 应用程序的默认 IoC 容器。
Scrutor https://github.com/khellang/Scrutor - Microsoft.Extensions.DependencyInjection 的程序集扫描扩展。
VS MEF https://github.com/Microsoft/vs-mef - Visual Studio 使用的托管扩展性框架 (MEF) 实现。
TinyIoC https://github.com/grumpydev/TinyIoC - 一个易于使用、无麻烦的控制反转容器,适合小型项目、图书馆和初学者。
Stashbox https://github.com/z4kn4fein/stashbox - 用于基于 .NET 的解决方案的轻量级、快速且可移植的依赖项注入框架。
原始答案如下。
我想我在这里可能有点挑剔,但重要的是要注意 DI(依赖注入)是一种编程模式,由 IoC(控制反转)框架促进,但不需要 IoC(控制反转)框架。 IoC 框架只是让 DI 变得更加容易,并且除了 DI 之外,它们还提供了许多其他好处。
话虽这么说,我确信这就是您要问的。关于 IoC 框架;我以前用过春网 http://www.springframework.net/ and 温莎城堡 https://github.com/castleproject/Windsor/blob/master/docs/README.md 很多,但背后真正的痛苦是您必须编写的那些烦人的 XML 配置!他们现在几乎都是这样移动的,所以我一直在使用结构图 http://structuremap.github.io/ 在过去一年左右的时间里,由于它已经转向使用强类型泛型和注册表的流畅配置,我使用 IoC 的痛苦障碍已降至零以下!现在我知道我的 IoC 配置在编译时(大部分)被检查,这让我感到非常高兴,而且我对 StructureMap 及其速度感到非常高兴。我不会说其他的在运行时很慢,但它们对我来说更难设置,而且挫败感常常会占上风。
Update
我一直在使用Ninject http://ninject.org/ 在我最新的项目中,使用起来非常愉快。在这里我有点难以言表,但是(正如我们在英国所说的)这个框架是“狗”。我强烈推荐它用于任何您想要快速启动和运行的新建项目。我从一个那里得到了我需要的一切一组精彩的 Ninject 截屏视频 http://www.dimecasts.net/Casts/ByAuthor/Justin%20Etheredge 作者:贾斯汀·埃瑟里奇。我不认为将 Ninject 改造到现有代码中是一个问题,但同样可以这样说结构图 http://structuremap.github.io/ 在我的经验中。在这两者之间前进将是一个艰难的选择,但我宁愿有竞争也不愿停滞不前,而且那里有相当多的良性竞争。
还可以找到其他 IoC 截屏视频在 Dimecasts 上 http://www.dimecasts.net/Casts/ByTag/IoC .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)