Prism学习历程四、Container和Services
2010-08-10 19:57
148 查看
Prism的依赖注入支持Unity,但不仅限于Unity,Prism通过IServiceLocator来构造对象,定义如下
是不是也很简单呀
UnityServiceLocatorAdapter public class MefServiceLocatorAdapter : ServiceLocatorImplBase { private readonly CompositionContainer compositionContainer; public MefServiceLocatorAdapter(CompositionContainer compositionContainer) { this.compositionContainer = compositionContainer; } protected override IEnumerable<object> DoGetAllInstances(Type serviceType) { List<object> instances = new List<object>(); IEnumerable<Lazy<object, object>> exports = this.compositionContainer.GetExports(serviceType, null, null); if (exports != null) { instances.AddRange(exports.Select(export => export.Value)); } return instances; } protected override object DoGetInstance(Type serviceType, string key) { IEnumerable<Lazy<object, object>> exports = this.compositionContainer.GetExports(serviceType, null, key); if ((exports != null) && (exports.Count() > 0)) { return exports.Single().Value; } throw new ActivationException( this.FormatActivationExceptionMessage(new CompositionException("Export not found"), serviceType, key)); } }
是不是也很简单呀
相关文章推荐
- WPF、MVVM和Prism学习历程
- Prism学习历程一,概览
- WPF、MVVM和Prism学习历程
- Prism学习历程二、设计概念
- Prism学习历程三、Bootstrapper
- ACM学习历程—Hihocoder 1177 顺子(模拟 && 排序 && gcd)(hihoCoder挑战赛12)
- ACM学习历程—UESTC 1222 Sudoku(矩阵)(2015CCPC H)
- 学习历程-LCM
- opencv学习历程001(配置opencv3.3.0+vs2015+64位win10)
- ACM学习历程——HDU2227 Find the nondecreasing subsequences(线段树 && dp)
- Spring学习历程---方法替换
- WPF与Prism一并学习(四)
- MongoDB详解学习历程
- 我的OSGI学习历程
- 从菜鸟到编程高手的学习与认知历程
- 我的iOS学习历程 - UITabBarViewController
- 我的C++学习历程(old)
- ACM学习历程—HDU5586 Sum(动态规划)(BestCoder Round #64 (div.2) 1002)
- 华为学习历程(3)
- Mysql学习历程(18)-触发器