向MVVMLight ViewModelLocator注入依赖项
本文关键字:依赖 注入 ViewModelLocator MVVMLight | 更新日期: 2023-09-27 18:02:57
我有一个ViewModelLocator
从MVVMLight包含我的MainViewModel
。
我有另一个单例类ResourceLogger
,它做别的事情。
ResourceLogger
在App.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之间共享内核?
如何解决这个问题?
最简单的方法是为内核创建公共静态类/变量,然后将其用于所有注册和Get()调用。
作为题外话,您应该尽您所能在整个系统中只调用一次kernel.Get()(或者至少尽可能少的调用)。