C# 将依赖项注入MVVMLight ViewModelLocator

C# 将依赖项注入MVVMLight ViewModelLocator,c#,wpf,ninject,mvvm-light,C#,Wpf,Ninject,Mvvm Light,我有一个来自MVVMLight的ViewModelLocator,其中包含我的MainViewModel 我有另一个单例类ResourceLogger,它做其他事情 ResourceLogger是在App.xaml.cs中创建的,使用: var resourceLogger = kernel.Get<ResourceLogger>(); 问题是它创建了两个ResourceLogger类 该模块如下所示: [Inject] public MainViewModel(ResourceL

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

我有另一个单例类
ResourceLogger
,它做其他事情

ResourceLogger
是在
App.xaml.cs
中创建的,使用:

var resourceLogger = kernel.Get<ResourceLogger>();
问题是它创建了两个
ResourceLogger

该模块如下所示:

[Inject]
public MainViewModel(ResourceLogger resourceLogger) { ... }
Bind<ResourceLogger>().ToSelf().InSingletonScope();
Bind<MainViewModel>().ToSelf().InSingletonScope();
Bind().ToSelf().InSingletonScope();
Bind().ToSelf().InSingletonScope();
是否有办法在App.xaml.cs和ViewModelLocator之间共享内核


如何解决此问题?

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

另外,您应该尽可能在整个系统中只调用一次kernel.Get()(或至少尽可能少地调用)