我们正在使用ASP.net MVC。
以下哪个是最好的DI框架Ninject或Unity?为什么?
我们正在使用ASP.net MVC。
以下哪个是最好的DI框架Ninject或Unity?为什么?
Answers:
上次查看它们中的任何一个时,我发现Ninject略好一些。但是两者都有缺点。
Ninject具有更好的流利配置方案。Unity似乎主要依靠XML配置。Ninject的主要缺点是它要求您在代码的任何地方引用Ninject.Core来添加[Inject]属性。
如果我要问的话,为什么将您的选择限制在这两个范围内?我认为Castle.Windsor,Autofac和StructureMap至少一样好或更好。
我同意Mendelt的观点,没有“最佳”的DI框架。这只是取决于情况,他们各有利弊。想想大卫·海顿(David Hayden)在DotNet Rocks上说,如果您使用EntLib的其余部分并且对此很熟悉,那么Unity是首选。我个人使用Unity是因为我的客户喜欢这样的事实:如果您理解我的意思,它会在DLL上显示Microsoft Enterprise Library(Unity)。
我既使用xml配置来设置接口,又使用它们的具体实现,但是随后在注入时在代码中使用属性,例如:
<type type="ILogger" mapTo="EntLibLogger">
<lifetime type="singleton"/>
</type>
并在代码中:
[InjectionConstructor]
public Repository([Dependency] ILogger logger)
我个人认为这样做可以使事情更清楚,但是当然可以说您将在整个应用程序中引用统一性。由你决定。