在 WPF 应用程序中使用 Unity DI 容器
Using Unity DI container in WPF application
我是 WPF 新手,正在考虑尝试 DI。我决定将 OnStartup 方法作为组合根。
protected override void OnStartup(StartupEventArgs e)
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IMailSender, Model.Concrete.GmailSender>();
var mainWindow = container.Resolve<MainWindow>();
mainWindow.Show();
}
但是,应用启动后,出现两个windows,正常的,有我的内容,完全是空的(好像没有初始化)。怎么了?
您需要删除 App.XAML 中的 StartUri。设置应用程序主 window 也是一个好习惯。参考下面的代码。
protected override void OnStartup(StartupEventArgs e)
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IMailSender, Model.Concrete.GmailSender>();
var mainWindow = container.Resolve<MainWindow>();
Application.Current.MainWindow = mainWindow;
Application.Current.MainWindow.Show();
}
我是 WPF 新手,正在考虑尝试 DI。我决定将 OnStartup 方法作为组合根。
protected override void OnStartup(StartupEventArgs e)
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IMailSender, Model.Concrete.GmailSender>();
var mainWindow = container.Resolve<MainWindow>();
mainWindow.Show();
}
但是,应用启动后,出现两个windows,正常的,有我的内容,完全是空的(好像没有初始化)。怎么了?
您需要删除 App.XAML 中的 StartUri。设置应用程序主 window 也是一个好习惯。参考下面的代码。
protected override void OnStartup(StartupEventArgs e)
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IMailSender, Model.Concrete.GmailSender>();
var mainWindow = container.Resolve<MainWindow>();
Application.Current.MainWindow = mainWindow;
Application.Current.MainWindow.Show();
}