WPF 依赖注入之 Microsoft.Extensions.DependencyInjection
NuGet 包:
![](https://i-blog.csdnimg.cn/blog_migrate/6d162915d1adacd06a8f8693949cf065.png)
添加业务需要的接口及实现类:
![](https://i-blog.csdnimg.cn/blog_migrate/fcb263f1c0a8569eee50d5198002773a.png)
在 App 中声明服务提供者对象,以及添加服务等:
![](https://i-blog.csdnimg.cn/blog_migrate/e41b0ca25474495f385518ce7d529d7d.png)
核心代码:
/// <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; //便于全局使用; } }
方式一、通过构造函数注入并获取
![](https://i-blog.csdnimg.cn/blog_migrate/6291eb8915888a35a77a684a946cd868.png)
![](https://i-blog.csdnimg.cn/blog_migrate/814fd5e1667cba9e5d35a01eb2f6447a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/db2b6b28feb0ef980ee2acd8b7a171ae.png)
方式二、主动从容器中获取
![](https://i-blog.csdnimg.cn/blog_migrate/a9e2ca6741fdb1b7d93a7495a00420df.png)
测试 Demo:
![](https://i-blog.csdnimg.cn/blog_migrate/8ac0e0b35d99297ae79d133d5232aa06.png)
代码地址:DLGCY_WPFPractice: 个人 WPF 练习项目 - Gitee.com
与 ChatGPT 的交谈
1、构造函数注入:
![](https://i-blog.csdnimg.cn/blog_migrate/3124f19c30434c225054225265201f55.png)
2、属性注入:
![](https://i-blog.csdnimg.cn/blog_migrate/ee21fa995d9733081c147748eeb03dc2.png)
3、方法注入:
![](https://i-blog.csdnimg.cn/blog_migrate/22d7022dada7d88691ebb75f73eb614e.png)
参考文章:
1、[.NET Core 3.0 中 WPF 使用 IOC 的图文教程](.NET Core 3.0中WPF使用IOC的图文教程_实用技巧_脚本之家)
2、ChatGPT
原创文章,转载请注明: 转载自 独立观察员
本文链接地址: WPF 依赖注入之 Microsoft.Extensions.DependencyInjection [http://dlgcy.com/wpf-dependency-injection/]