想要在 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();
}