想要在 WPF 应用程序中实现依赖注入
Want to implement Dependency Injection in a WPF application
在现有的 WPF 应用程序中,我想实现依赖项注入。
所以在我的应用程序启动时,我设置了 di 容器并让 window 像这样构建:
var builder = new ContainerBuilder();
builder.RegisterType<SplashScreen>().AsSelf();
builder.RegisterType<ILogger>().As(Logger);
Container = builder.Build();
using (var scope = Container.BeginLifetimeScope())
{
var window = scope.Resolve<SplashScreen>();
window.Show();
window.Initialiseren();
}
在我的 window 中,我有一个按钮调用另一个具有多个依赖项的 window?
public partial class AnotherWindow
{
public AnotherWindow(ILogger)
{
...
}
}
public partial class Window
{
public void Button_Click()
{
AnotherWindow w = new AnotherWindow(new Logger());
w.Show();
}
}
我如何使用我的容器来解析另一个window而不在周围到处传递我的容器?
我的目标是使用 autofac 初始化 ILogger。
提前致谢!
例如,您可以使用 App
class:
的静态 属性 公开从 Build()
返回的 IContainer
internal static IContainer Container { get; set; }
然后您可以从任何视图访问它:
public void Button_Click()
{
AnotherWindow w;
using (var scope = App.Container.BeginLifetimeScope())
w = scope.Resolve<SplashScreen>();
w?.Show();
}
在现有的 WPF 应用程序中,我想实现依赖项注入。 所以在我的应用程序启动时,我设置了 di 容器并让 window 像这样构建:
var builder = new ContainerBuilder();
builder.RegisterType<SplashScreen>().AsSelf();
builder.RegisterType<ILogger>().As(Logger);
Container = builder.Build();
using (var scope = Container.BeginLifetimeScope())
{
var window = scope.Resolve<SplashScreen>();
window.Show();
window.Initialiseren();
}
在我的 window 中,我有一个按钮调用另一个具有多个依赖项的 window?
public partial class AnotherWindow
{
public AnotherWindow(ILogger)
{
...
}
}
public partial class Window
{
public void Button_Click()
{
AnotherWindow w = new AnotherWindow(new Logger());
w.Show();
}
}
我如何使用我的容器来解析另一个window而不在周围到处传递我的容器? 我的目标是使用 autofac 初始化 ILogger。
提前致谢!
例如,您可以使用 App
class:
Build()
返回的 IContainer
internal static IContainer Container { get; set; }
然后您可以从任何视图访问它:
public void Button_Click()
{
AnotherWindow w;
using (var scope = App.Container.BeginLifetimeScope())
w = scope.Resolve<SplashScreen>();
w?.Show();
}