我知道理论上依赖注入是什么,但我还没有在我的任何项目中实际使用过依赖注入。所以请考虑我成为DI noob。
直截了当的问题是; MEF可以用于依赖注入吗?
如果可以,我的后续问题是; 使用MEF进行依赖注入是一个好主意吗?
我理解我的跟进问题可能被视为主观问题。但是,我正在寻找支持和反对的最佳做法和理由。所以,我希望我的跟进问题不会出现过多的问题。
所有这些的背景是我觉得有点迷失试图弄清楚如何为asp.net mvc制作一个插件框架。
答案 0 :(得分:8)
正如我在my book 中解释的那样,MEF可以用作DI容器,但在目前的版本中,不是特别适合完成任务。
MEF旨在解决可扩展性方案,虽然它具有许多重叠功能,但在配置和生命周期管理方面却非常有限。
答案 1 :(得分:1)
在我工作的地方,使用ASP.NET MVC2,我们使用Castle Windsor进行依赖注入。然后我们使用XML配置来初始化容器。这意味着我们可以为接口注入不同类型而无需重建。
我相信.NET为MEF提供了另一种选择,同样称为MAF。它应该更复杂,但提供更多的控制。但我对此一无所知。
(我不是很有经验(1年就业),所以如果有人不同意我的意见,他们可能更正确)
答案 2 :(得分:1)
Glenn Block(MEF的前产品经理)在blog post中回答了这个FAQ。
MEFContrib已经解决了他在帖子中提到的MEF的大多数缺点:它包含额外的目录和导出提供程序实现,以增加对POCO,开放式泛型和拦截的支持。
更新:最近发布的MEF2 Preview3添加了对开放式泛型和attribute-less registration开箱即用的支持。预览版的API不是最终的,但这很好地表明这些功能将出现在下一个(> v4.0).NET版本中。