将棱镜与Ninject一起使用

是否有人在那里使用Prism框架与Ninject而不是Unity? 我需要一些Unity尚未支持的function,我决定将IoC容器切换到Ninject。 虽然我在替换中有点挣扎。

我需要从Prism使用的是EventAggregator和RegionManager。 我已经看到了这个实际上替换的示例 ,但是这是为较旧版本的Prism编写的,并且几个类似乎已经改变等等。所以我在尝试重写它之后做了一些努力后最终都感到困惑。

所以 – 我的问题基本上是: 如何用Ninject替换Unity?

有什么必要的步骤? 最初我假设我可以编写一个简单的引导程序来创建和配置Ninject容器并使用它来解析所有其他对象。 我将IEventAggregator绑定到EventAggregator并将IRegionManager绑定到RegionManager,但是在创建Shell并且调用RegionManager.CreateRegion时它会失败。 问题是,似乎我需要在某处设置ServiceLocator,因为它在此行上失败:

IServiceLocator locator = ServiceLocator.Current; 

一路上有什么想法和提示吗?

Michael Hart为Prin中的Ninject 实现了必要的位

您只需要实现自己的“NinjectBoostrapper”和使用Ninject的IServiceLocator实现。 链接中的代码为您完成所有这些工作。

我刚刚创建了一个使用Ninject 2.0和Prism 4.0的github项目,该项目应满足任何想要为Ninject交换unity或MEF的人的需求

网站在这里: Prism Ninject Extension