我正在使用Prism框架中的Ninject替换Unity。这需要我实现一个Ninject特定的IServiceLocator。根据我的理解,我可以继承ServiceLocatorImplBase,这就是我的工作。现在我该如何将其设置为Current ServiceLocator?我需要这个以便例如RegionManager在创建区域时获取它,并调用:
IServiceLocator locator = ServiceLocator.Current;
这是一个静态属性,但它没有setter ..有一个函数:
void ServiceLocator.SetLocatorProvider(ServiceLocatorProvider newProvider);
..但是参数与我的ServiceLocatorImplBase不匹配。有任何想法吗?
答案 0 :(得分:4)
ServiceLocatorProvider
是委托人,您可以这样做:
var container = NInjectServiceLocator(); // your ServiceLocatorImplBase impl.
ServiceLocator.SetLocatorProvider(() => container);