首页 > 编程语言 >C# 依赖注入的三种方式

C# 依赖注入的三种方式

时间:2023-10-03 13:55:56浏览次数:33  
标签:依赖 C# App 三种 服务提供者 services 构造函数 public 注入

NuGet 包:

 

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

 

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

 

核心代码:

/// <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; //便于全局使用;
    }
}

 

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

 

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

 

测试 Demo:

 

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

 

ChatGPT 的交谈

1、构造函数注入:

 

2、属性注入:

 

3、方法注入:

 

参考文章:

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

2、ChatGPT

 

原创文章,转载请注明: 转载自 独立观察员

本文链接地址: WPF 依赖注入之 Microsoft.Extensions.DependencyInjection [http://dlgcy.com/wpf-dependency-injection/]

标签:依赖,C#,App,三种,服务提供者,services,构造函数,public,注入
From: https://www.cnblogs.com/cnhk19/p/17741060.html

相关文章

  • CTFHub——SSRF(全)
    一、内网访问payload:http://127.0.0.1/flag.php(请求网页)payload:file://127.0.0.1/var/www/html/flag.php(得到flag.php的文件内容)二、伪协议读取文件payload:file:///var/www/html/flag.phpfile协议读取文件内容,不会进行执行三、端口扫描payload:dict://127.0.0.1:使用bp......
  • [题解]CF1748C Zero-Sum Prefixes
    UPD23.10.3更新的对思路的描述,以及代码。思路对于每一个\(a_i=0\),如果我们将它变为\(x\),都可以直接将\(i\simn\)位置上的前缀和加\(x\)。设\(a_j\)是\(a_i\)后第一个\(0\),那么,在\(j\)时同样有上述规律。所以,我们只需在\(i\)时考虑,\(i\sim(j-1)\)的贡......
  • IoC容器
    前言IoC容器是Spring框架的核心组成部分之一。它是一个负责对象创建、组装和管理的容器,通过控制对象的创建和依赖关系的注入,实现了对象之间的解耦和灵活性。在传统的编程模型中,对象的创建和控制权通常由开发者负责,开发者需要手动实例化对象、处理对象之间的依赖关系并进行组装,这......
  • FPGA直方图均衡化 Label: Research
    使用FPGA对图像直方图做出均衡化,公式如下:$$D_{B}=f(D_{A})=\frac{D_{max}}{A_{0}}\sum_{i=0}^{D_{A}}H(i)$$上式中,H(i)为第i级灰度的像素个数,A为图像的面积,也即像素总数。因此,计算均衡后的图像步骤如下:(1)首先计算出当前图像......
  • SAP S/4HANA 的 Data-Centric Applications 编程范式
    SAP数据中心应用开发范式是一种现代化的方法,旨在利用SAPHANA数据库的强大性能和功能来构建灵活、高效、实时的企业应用程序。这种方法与传统的SAP应用程序开发方式,如ClassicApplications,有着显著的不同。在这篇文章中,我将详细介绍SAP数据中心应用开发范式,包括其核心概念......
  • SAP Virtual Data Model 和 CDS View 的关联关系
    VirtualDataModel是SAPHANA的一种设计模式,它描述了数据应如何组织和访问以满足业务需求。VDM的目标是提供统一的、一致的数据访问视图,隐藏底层数据源的复杂性。VDM由基本视图(InterfaceViews)、复合视图(CompositeViews)和消费视图(ConsumptionViews)组成,以满足不同层级的业......
  • JavaScript(一)
    javascript的组成:ECMAScript和WebAPIs(DOM、BOM) 注释:ctrl+/单行注释shift+alt+a块注释 js的输入输出语法:输出document.weite("hello")//可以带标签,在body内输出alert('alert')//弹窗警告console.log("hello")//控制台输出​输入letname=prompt("你叫:")​//aler()和pro......
  • 什么是 Angular 14 的 strict typing of Angular Reactive Forms
    Angular14引入的"stricttypingofAngularReactiveForms"是一项强大的功能,它进一步提高了Angular应用程序的类型安全性和可维护性,特别是在处理表单时。这个功能使开发人员能够更精确地定义表单控件和表单模型的类型,从而减少了潜在的运行时错误,并提供了更好的代码提示和文......
  • 什么是 NPM 里的 Peer Dependency
    什么是PeerDependency?在Node.js生态系统中,PeerDependency(同等依赖)是一个重要而有时容易被误解的概念。它是指一个模块(或包)所依赖的另一个模块(或包)的版本。与常规依赖不同,PeerDependency主要用于确保多个模块在同一个主模块的上下文中使用,并共享依赖的版本。这个概念的理解对......
  • 什么是企业级应用软件领域的 Strategic Customer
    StrategicCustomer(战略客户)是指那些对企业有重大影响的客户。这些客户的价值不仅仅体现在他们为企业带来的直接收益,更重要的是,他们能够对企业的战略发展产生重大影响。他们可能是企业的大客户,也可能是企业的重要合作伙伴。他们的需求、反馈和建议,都可能对企业的产品开发、市场战......