代码之家  ›  专栏  ›  技术社区  ›  Julien

我应该如何在WinUI3应用程序中实现依赖项注入?

  •  0
  • Julien  · 技术社区  · 1 年前

    在WinUI3应用程序中有多种实现依赖项注入的方法,我看不出其中的区别。

    例如,它们之间有什么区别?

    首次实施:

    IConfiguration configuration = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json", true, true)
        .Build();
    
    var services = new ServiceCollection();
    
    services.AddSingleton<IExempleService, ExempleService>();
    services.AddSingleton<MainWindow>();
    
    services.AddDbContext<MyContext>(
        options =>
        {
            options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
        },
        ServiceLifetime.Scoped
    );
    
    services.BuildServiceProvider();
    

    第二次实施:

    Host = Microsoft.Extensions.Hosting.Host.
    CreateDefaultBuilder().
    UseContentRoot(AppContext.BaseDirectory).
    ConfigureServices((context, services) =>
    {
        services.AddSingleton<IExempleService, ExempleService>();
    
        services.AddDbContext<MyContext>(options =>
            options.UseSqlServer(context.Configuration.GetConnectionString("DefaultConnection"))
        );
    }).
    Build();
    
    0 回复  |  直到 1 年前
        1
  •  0
  •   Nick    1 年前

    在DI方面没有区别。第二个实现再次到达 ServiceCollection ,但HostBuilder提供其他服务。

        2
  •  0
  •   bricelam    1 年前

    第二个代码列表使用 generic host 。除了配置和依赖项注入,它还包括用于日志记录和应用程序生存期的挂钩。它还为添加 background services