ASP.NET MVC3 和 Unity 结合使用的示例,Unity 通过 Register 方法或者配置注入实例,MEF 则是通过 [Import] [Export] 特性绑定依赖。在 MEF 2.0 中当前 dll 中如果在 *.Parts.* 命名空间下的类型会自动作为依赖源。
CompositionProvider.AddPartsAssembly 亦可运行时添加依赖对象,非常灵活。通过元数据定义的依赖和通过XML来描述依赖关系是各有利弊,XML方式势必带来配置和维护的学习成本(编码注入是一种写法,配置又是另一种写法),而元数据定义方式使得关系凌乱分散,侵入性也较强。
最新的MEF 2.0 Preview 5 加入了 System.ComponentModel.Composition.Web.Mvc.CodePlex.dll 简化了构建一个灵活的,可测试的ASP.NET MVC应用程序,实现:
1)为Controller提供依赖注入
2)通过定义简单的约定(Import & Export) 识别和配置 MEF Parts(组合)
3)将依赖实例的生存周期映射到Request的生存周期上
4) 简化 ActionFilter 和 ModelBinder 的依赖注入实现
* 目前还没有提供 nuget 的方式,所以只能下载 dll 手动添加:
本站技术原创栏目文章均为中睿原创或编译,转载请注明:文章来自中睿,本站保留追究责任的权利。