我们正在使用ASP.net MVC。
Ninject和Unity哪一个是最好的DI框架?为什么?
我们正在使用ASP.net MVC。
Ninject和Unity哪一个是最好的DI框架?为什么?
我知道这是一个旧问题,但以下是我的想法:
个人喜欢Ninject。我喜欢流畅的接口和避免使用XML。一般来说,我喜欢XML,只是不喜欢用于这种配置文件。特别是当进行重构时,流畅的接口使得更容易纠正错误。
我错过了StructureMap的ObjectFactory,但有简单的解决方法可以将其添加到Ninject中。
正如Jeffery所指出的,在你只有一个构造函数时,你不必使用[Inject]属性。
我发现我喜欢流畅的接口不仅因为它们避免了XML,而且还因为当我更改影响它们的内容时,会在编译时出现错误。但XML配置不会,我需要记住要修改的内容越少,我就越省心。
Ninject检测到循环依赖关系,如果您使用的是注入构造函数,则与Unity不同,后者无论注入技术如何都只会抛出一个极难调试的StackOverflowException异常。
<type type="ILogger" mapTo="EntLibLogger">
<lifetime type="singleton"/>
</type>
在代码中:
[InjectionConstructor]
public Repository([Dependency] ILogger logger)
我个人认为这样做可以更清晰地说明发生了什么,当然也有人会说你的应用程序中到处都有对Unity的引用。这取决于你。