WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

NuGet 包:

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

添加业务需要的接口及实现类:.

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

在 App 中声明服务提供者对象,以及添加服务等:

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

核心代码:

/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
    /// <summary>
    /// 服务提供者
    /// </summary>
    public static IServiceProvider ServiceProvider { get; private set; }

    public App()
    {
        IServiceCollection services = new ServiceCollection();
        //注入服务;
        services.AddSingleton<ITextService, TextService>();

        IServiceProvider serviceProvider = services.BuildServiceProvider();
        App.ServiceProvider = serviceProvider; //便于全局使用;
    }
}

方式一、通过构造函数注入并获取

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

方式二、主动从容器中获取

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

测试 Demo:

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

代码地址:https://gitee.com/dlgcy/DLGCY_WPFPractice/tree/Blog20230108

 ChatGPT 的交谈

1、构造函数注入:

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

2、属性注入:

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

3、方法注入:

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

参考文章:

1、[.NET Core 3.0 中 WPF 使用 IOC 的图文教程](https://www.jb51.net/article/164134.htm)

2、ChatGPT