我应该在dotnet中使用哪种依赖注入技术?

时间:2009-05-18 17:28:12

标签: .net dependency-injection inversion-of-control

[修订版5/14/09:由于我的部署方案,我需要这个以Dotnet 2.0为目标]

我是Dependency Injection& 510C。

我发现有很多容器和库可以帮助这个过程。

使用这些库有哪些优缺点。你最喜欢的(dotnet)容器是什么?为什么?

如何为依赖注入滚动自己的容器呢?

谢谢,

彼得斯蒂芬斯

8 个答案:

答案 0 :(得分:3)

如果只需要依赖注入,可能AutoFac将是最佳选择,因为它很小,非常简单和合乎逻辑。不应该难以理解。

一旦你得到了,你觉得需要更成熟的产品(可以做其他事情,而不仅仅是DI)我建议你去看看温莎城堡,它非常强大,开箱即用,设计得非常好,并可定制。 如果你不喜欢这样,我听说过关于StrcutureMap的好消息。

答案 1 :(得分:2)

答案 2 :(得分:1)

我使用名为StructureMap的IOC工具:Structure Map 我发现该工具非常有用且易于实现。

答案 3 :(得分:1)

经过一些更多的研究:Ninject似乎是一个有用的选择。它支持Dotnet 2.0。它不需要大量的XML配置。

仍在努力找出为生产和单元测试环境提供不同DI配置的最佳实践。

答案 4 :(得分:1)

找到关于此主题的另一个主题here

答案 5 :(得分:0)

我喜欢MEF,主要是因为它在.NET 4.0中得到了很好的支持(因为MS宣布他们在Visual Studio 2010中将它用作DI的基础)。

使用起来也很简单,尤其是DI。处理DI和Add-In场景是该框架的主要目标,因此在这些情况下它非常简洁。

它也适用于IoC,但这不是它的主要目标。

答案 6 :(得分:0)

您可以在代码中使用Common Service Locator,它需要明确调用容器。这样,如果您对所选框架不满意,可以通过插入新框架来切换它。

答案 7 :(得分:0)

Spring.NET。如果您只想使用Spring的DI组件,那么您只需要使用它(并且您只需要引用这些DLL)。然后如果你想使用单元测试的东西,或Quartz的东西,或NHibernate的东西,你也可以添加这些DLL - 它是以模块化的方式构建的。所有不同的部分都有一致性,因为它们来自同一个框架。我认为这是一个非常好的框架,可以很好地补充.NET。