如何将ServiceLocator实现设置为ServiceLocator.Current?

时间:2010-04-12 12:02:21

标签: .net prism ioc-container ninject iservicelocator

我正在使用Prism框架中的Ninject替换Unity。这需要我实现一个Ninject特定的IServiceLocator。根据我的理解,我可以继承ServiceLocatorImplBase,这就是我的工作。现在我该如何将其设置为Current ServiceLocator?我需要这个以便例如RegionManager在创建区域时获取它,并调用:

IServiceLocator locator = ServiceLocator.Current;

这是一个静态属性,但它没有setter ..有一个函数:

void ServiceLocator.SetLocatorProvider(ServiceLocatorProvider newProvider);

..但是参数与我的ServiceLocatorImplBase不匹配。有任何想法吗?

1 个答案:

答案 0 :(得分:4)

ServiceLocatorProvider是委托人,您可以这样做:

var container = NInjectServiceLocator(); // your ServiceLocatorImplBase impl.

ServiceLocator.SetLocatorProvider(() => container);