Ninject:如何解决内核本身/this
本文关键字:内核 this 解决 何解决 Ninject | 更新日期: 2023-09-27 18:26:32
这里是模块:
public class InjectModule : NinjectModule
{
public override void Load()
{
Bind<DbContext>().ToSelf().InSingletonScope();
Bind<ISomeRepository>().To<SomeRepository>()
.InThreadScope();
Bind<MainWindow>().ToSelf().InThreadScope();
Bind<IKernel>() //how to bind???
}
}
我的应用程序:
protected override void OnStartup(StartupEventArgs e)
{
IKernel kernel = new StandardKernel(new InjectModule());
MainWindow window = kernel.Get<MainWindow>();
window.Show();
base.OnStartup(e);
}
我需要内核作为主窗口中的属性DependencyResolver
。如何使其发挥作用?
public partial class MainWindow
{
[Inject]
public IKernel DependencyResolver { get; set; }
}
您不应该直接在模块之外使用内核。内核本身具有自动模块加载功能,如果你想扫描基本目录中的ninject模块,它会扫描这些模块。如果组件需要解析特定实例,你应该使用提供的扩展,比如工厂扩展,它允许根据接口注入Func、Lazy或动态工厂。如果任何扩展都没有帮助,那么注入IResolutionRoot接口,但永远不要注入IKernel!