我有一个来自MVVMLight的ViewModelLocator
,其中包含我的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之间共享内核?
如何解决此问题?
答案 0 :(得分:0)
最简单的方法是为内核创建公共静态类/变量,然后将其用于所有注册并调用Get()。
顺便说一下,你应该尽可能只在整个系统中调用kernel.Get()(或至少尽可能少的调用)。