我在WPF中迷失了Ninject。
我正在 App.xaml 中对其进行初始化,但 MainWindow.xaml 中的 ITest 属性(即使使用 InjectAttribute)没有得到解决并且保持为空。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
IKernel kernel = new StandardKernel();
kernel.Bind<ITest, Test>();
base.OnStartup(e);
}
}
我用谷歌搜索了一下,发现它不是那样工作的。在试图找到解决方案时,我最终创建了 IMainWindow,除了“void Show();”之外什么都没有。并将其添加到主窗口。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
IKernel kernel = new StandardKernel();
kernel.Bind<ITest, Test>();
kernel.Bind<IMainWindow, MySolution.MainWindow>();
kernel.Get<IMainWindow>().Show();
base.OnStartup(e);
}
}
为此,我得到一个 NullReferenceException 与 .Get
我也试过这个:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
IKernel kernel = new StandardKernel();
kernel.Bind<ITest, Test>();
MainWindow = new MySolution.MainWindow(kernel);
//then kernel.Inject(this); in the MainWindow constructor
MainWindow.Show();
base.OnStartup(e);
}
}
现在,我在 MainWindow 的 .Inject 行收到 NullReferenceException。
我找到了另一种不同的解决方案,但它们似乎很重量级,我放弃了对所有解决方案的测试并尝试哪一个有效。
请问有什么帮助吗?