使用 ninject 的依赖注入不起作用

Dependency Injection using ninject not working

我的目标很简单:我希望将 class "MainWindowVM"(实现 IMainWindowVM)的已经存在的实例注入 class "StaticTestsResultsViewModel"。我不(!)想要实例化 class "MainWindowVM" 的新实例。相反,我希望将此 class 的已经存在的实例注入 class "StaticTestsResultsViewModel".

My goal is simply this: I want the already existent instance of class "MainWindowVM" (implementing IMainWindowVM) to be injected into class "StaticTestsResultsViewModel". I do not(!) want a new instance of class "MainWindowVM" to be instantiated. Instead, I want the already existent instance of this class to be injected into class "StaticTestsResultsViewModel".

在这种情况下,您应该像这样注册它:

kernel.Bind<IMainWindowVM>().To<MainWindowVM>().InSingletonScope();

请记住,当您将 class 注册为单例时,这也隐含地使其所有依赖项也成为单例。参见 Captive Dependency。如果这对您的应用程序设计来说是不可接受的,您应该将存储共享 属性 的单例实例移动为 MainWindowVMnot 的依赖项 make MainWindowVM单例(如transient)。

                          PropertyHolder (Singleton)
                         /
MainWindowVM (Transient)
                        \
                          OtherDependency (Any scope shorter than singleton)