首页 > 其他分享 >.NET7依赖注入

.NET7依赖注入

时间:2023-03-06 13:57:11浏览次数:38  
标签:生命周期 DI 模式 依赖 NET7 public 注入

依赖注入(Dependency Injection,简称 DI)功能,使得应用程序可以更加容易地管理组件之间的依赖关系。
在 .NET 7 中,DI 是通过 Microsoft.Extensions.DependencyInjection 命名空间中的类和接口实现的。

依赖注入原理

依赖注入原理: 依赖注入是一种设计模式,其核心思想是将组件之间的依赖关系转移给容器,由容器负责管理和实例化这些组件。
在 .NET 7 中,DI 采用了基于构造函数注入的方式来实现依赖注入,即通过构造函数将依赖项注入到组件中。

设计模式

生命周期瞬时模式

瞬时模式(Transient)每次请求都会创建一个新的实例,这是最常用的模式。

services.AddTransient<IMyService, MyService>();

生命周期作用域模式

作用域模式(Scoped)在同一个作用域内,每次请求都会使用同一个实例。

services.AddScoped<IMyService, MyService>();

生命周期单例模式

单例模式(Singleton)整个应用程序生命周期中只会创建一个实例。

services.AddSingleton<IMyService, MyService>();

生命周期自定义模式

自定义生命周期模式允许用户通过实现自己的生命周期接口来定义自己的生命周期模式。这种模式常用于需要特殊生命周期管理的对象,例如需要在后台执行的长时间运行的任务等。用户可以实现自己的生命周期接口,并在 DI 容器中注册自己的服务。示例代码如下:

public interface IMyServiceLifetime : IDisposable
{
    void Show();
}

public class MyService : IMyServiceLifetime
{
    public void Show()
    {
        // ...
    }

    public void Dispose()
    {
        // ...
    }
}

services.AddSingleton<IMyServiceLifetime, MyService>();

标签:生命周期,DI,模式,依赖,NET7,public,注入
From: https://www.cnblogs.com/YataoFeng/p/17183561.html

相关文章

  • 工具类中@Value注入为空的解决方案
    参考链接参考链接1记录原因分析:工具类一般都是静态类,提供的变量也是静态变量。@value只能给普通变量注入值,不能给静态变量注入值。延伸:静态变量是一个类的属性,不是......
  • Maven常用依赖包简单
    Maven官方仓库:MavenRepository:junit»junit(mvnrepository.com)Mysql1<!--Mysql-->2<dependency>3<groupId>mysql</groupId>4<artifactId>mysql-c......
  • spring的循环依赖和三级缓存
    一、spring中bean的生命周期回顾要理解spring中的循环依赖问题需要先了解spring中bean的生命周期,spring中创建bean的过程中主要有这几个阶段:实例化前$\rightarrow$实......
  • create_function()注入
    1.介绍一下php中create_function()函数。stringcreate_function(string$args,string$code)string$args是变量部分string$code是方法代码部分,就是要执行的语句......
  • java的guice3.0依赖注入方法
    java的guice3.0依赖注入方法,这里采用的是官方文档的第一种注入方法。jar包下载地址:​​https://github.com/google/guice/releases/download/3.0/guice-3.0.zip​​工程目录......
  • 使用jstl得加pom里的依赖
    <!--jstl--><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><......
  • DVWA 之 SQL Injection-SQL注入
    七、SQLInjection-SQL注入原理SQL注入是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到恶意执行SQL语句的目的。手工注入常规思路判断是否存在注入,注......
  • DVWA 之 SQL Injection(Blind) - SQL注入(盲注)
    八、SQLInjection(Blind)-SQL注入(盲注)原理SQL盲注与一般注入的区别在于一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常无法从显示页面......
  • DVWA 之 Command Injection-命令注入
    二、CommandInjection-命令注入原理命令注入是指对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻击手段。PHP命令......
  • Sql 注入方案合集
    【以mysql数据库为例】【参考书目:sqlilabs过关手册注入天书https://www.cnblogs.com/lcamry/category/846064.html】推荐看原书,这篇文章主要做整理学习之用!Sql注入简......