将依赖项注入MVVMLight ViewModelLocator

时间:2011-07-20 11:44:14

标签: c# wpf ninject mvvm-light

我有一个来自MVVMLight的ViewModelLocator,其中包含我的MainViewModel

我有另一个单身类ResourceLogger,它可以做其他事情。

ResourceLoggerApp.xaml.cs中使用:

创建
var resourceLogger = kernel.Get<ResourceLogger>();

MainViewModel取决于ResourceLogger

我在ResourceLogger注入MainViewModel时遇到问题,如下所示:

[Inject]
public MainViewModel(ResourceLogger resourceLogger) { ... }

问题是它创建了两个ResourceLogger类。

NinjectModule看起来如下:

Bind<ResourceLogger>().ToSelf().InSingletonScope();
Bind<MainViewModel>().ToSelf().InSingletonScope();

有没有办法在App.xaml.cs和ViewModelLocator之间共享内核?

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

最简单的方法是为内核创建公共静态类/变量,然后将其用于所有注册并调用Get()。

顺便说一下,你应该尽可能只在整个系统中调用kernel.Get()(或至少尽可能少的调用)。