使用 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。如果这对您的应用程序设计来说是不可接受的,您应该将存储共享 属性 的单例实例移动为 MainWindowVM
和 not 的依赖项 make MainWindowVM
单例(如transient)。
PropertyHolder (Singleton)
/
MainWindowVM (Transient)
\
OtherDependency (Any scope shorter than singleton)
我的目标很简单:我希望将 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。如果这对您的应用程序设计来说是不可接受的,您应该将存储共享 属性 的单例实例移动为 MainWindowVM
和 not 的依赖项 make MainWindowVM
单例(如transient)。
PropertyHolder (Singleton)
/
MainWindowVM (Transient)
\
OtherDependency (Any scope shorter than singleton)