在现有的WPF应用程序中,我想实现依赖项注入。 因此,在应用程序启动时,我设置了di容器,并让窗口像这样构建:
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();
}
在我的窗口中,我有一个按钮可以调用具有多个依赖项的另一个窗口?
public partial class AnotherWindow
{
public AnotherWindow(ILogger)
{
...
}
}
public partial class Window
{
public void Button_Click()
{
AnotherWindow w = new AnotherWindow(new Logger());
w.Show();
}
}
如何在不将容器传递到周围的情况下使用容器来解决另一个窗口? 我的目标是使用autofac初始化ILogger。
提前谢谢!
答案 0 :(得分:1)
例如,您可以使用IContainer
类的静态属性公开从Build()
返回的App
:
internal static IContainer Container { get; set; }
然后您可以从任何视图访问它:
public void Button_Click()
{
AnotherWindow w;
using (var scope = App.Container.BeginLifetimeScope())
w = scope.Resolve<SplashScreen>();
w?.Show();
}