在为.NET选择依赖注入框架时,我应该考虑什么

Ian*_*ose 28 .net dependency-injection inversion-of-control

另请参阅哪些C#/ .NET依赖注入框架值得研究?

现在有很多依赖 注入框架可供选择.由于您使用的库,您以前经常被迫使用给定的依赖注入框架.但是,Common Service Locator库使库代码独立于注入框架.

学习所有这些所需的时间足以决定使用哪个是不合理的.我不相信我们已经达到了可以讨论最佳依赖注入框架的阶段.那么我应该问什么问题关于项目和我自己来帮助决定在特定情况下使用的最佳依赖注入框架?

了解为什么选择当前使用的依赖注入框架以及您是否仍然对此选择感到满意也很有用.

在比较依赖注入框架的样式时,是否还有一个有用的词汇表?

服务定位器库是否在现实生活中工作,或者您是否被迫在同一项目中使用许多不同的依赖注入框架?

使用每个依赖注入框架对代码进行折射是多么容易,例如ReSharper等工具是否适用于给定的框架?

jos*_*wer 15

仅供参考,就在今天早上,我在这里看到了所有.NET IoC容器之间的有趣比较:

http://elegantcode.com/2009/01/07/ioc-libraries-compared/

一些问题:

  1. 你需要多少主流支持? 春天可能是那里最大的一个.现在每个人都使用它或听说过它,所以很多信息.它也可能具有最多的功能,但这意味着需要学习更多功能.像Autofac这样的小容器可能不错,但您可能会遇到一个无法找到帮助的问题.
  2. 你配备Xml配置吗? 每个IoC容器都依赖于某种配置和设置.Spring和Unity都是Xml重的.
  3. 这是永久的选择吗?如果您在其中一个只有一次选择的地方,那就无所谓了.但是,如果你想要在未来选择其他解决方案,你可能不希望IoC要求你归类你的类(与上述问题相反),因为当你不得不撕掉所有的时候你会讨厌自己那东西.相比之下,等待一些xml配置可能不会那么痛苦.
  4. 你的店铺是什么样的? 我只是因为"喘气!它不是微软!"而无法推销几个开源选项.反应.如果你是一个直接的MS商店,使用Unity将是一个更容易的文化胜利.

在个人笔记上:

我使用StructureMap的原因与我链接的博客中提到的原因相同.我认为Xml配置很难维护,尤其是调试(参见WCF).我还没有尝试Ninject,但根据他们的营销,它一定是超级rad!

  • 真?哇,太棒了.我打了很长时间的战斗.你不会相信我必须在这里获得NHibernate的不公平交易;-) (3认同)
  • 我对#4有相反的反应,我有,"它不是开源"喘息. (2认同)

小智 6

很难回答哪个框架是"最好的",但我可以告诉你哪个框架最简单:Simple Injector:

Simple Injector是一个易于使用的.NET和Silverlight控件反转库.它仅支持基于代码的配置,是不熟悉大型IoC/DI库的开发人员的理想起点

http://simpleinjector.codeplex.com/

无耻的插头btw ;-)