您的位置:首页 > 大数据 > 人工智能

Prism学习历程四、Container和Services

2010-08-10 19:57 141 查看
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));
}
}


是不是也很简单呀
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: