首页 > 其他分享 >.NET 依赖注入的3中方式

.NET 依赖注入的3中方式

时间:2023-12-13 15:26:26浏览次数:29  
标签:依赖 service Service IScopedService NET 注入 public 构造函数

一、简介

       依赖注入共有3种方式:构造函数注入、属性注入、方法注入

二、构造函数注入

       在program.cs中对组件进行注册:     

builder.Services.AddScoped<IScopedService,ScopedService>();

       服务注册配置后,在需要注入的类上使用构造函数。

public class Controller
{
    private readonly IScopedService Service;
    public Controller(IScopedService service)
    {
        this.Service = service;
    }
}

三、属性注入  

定义接口和类,同构造函数注入。

public class Controller
{
    [Inject]
    private readonly IScopedService Service{get;set;}

//使用 Service 调用所需方法
    Service.GetMoney();
}

 

在Startup.cs文件的 Configure.Services 方法中,需要添加 AddControllersWithViews() 方法,并启用属性注入。

四、方法注入(比较少见)

定义接口和类,同构造函数注入。

在需要调用的方法中加上[Dependency]

public class Controller
{
private readonly IScopedService Service = null;//属性改为为变量
//新增任意名称方法,参数为需要注入的 IScopedService ,写法与构造函数类似,只是此处是方法不是构造函数。
public void Function( IScopedService service) { 
Service = service;
}

public void Hey(){
Service.GetMoney();
}

 

     

标签:依赖,service,Service,IScopedService,NET,注入,public,构造函数
From: https://www.cnblogs.com/xiaobaicai12138/p/17899029.html

相关文章

  • 使用 npm-check-updates 检查项目的 npm 依赖项是否有更新
    一、安装npm-check-updates:npminstall-gnpm-check-updates二、使用:在项目根目录运行以下命令,检查所有项目依赖项的最新版本:ncu执行结果如下:红色=主要升级青色=小幅升级绿色=补丁升级更新版本:ncu-u注意备份或者提交代码,确保包文件处于版本控制......
  • Netty04-优化与源码
    优化与源码分析1.优化1.1扩展序列化算法序列化,反序列化主要用在消息正文的转换上序列化时,需要将Java对象变为要传输的数据(可以是byte[],或json等,最终都需要变成byte[])反序列化时,需要将传入的正文数据还原成Java对象,便于处理目前的代码仅支持Java自带的序列化,反......
  • 5分钟搞懂Kubernetes:轻松理解所有组件
    之前我曾经提到了一系列关于服务网格的内容。然而,我意识到有些同学可能对Kubernetes的了解相对较少,更不用说应用服务网格这个概念了。因此,今天我决定带着大家快速理解Kubernetes中的一些专有名词,以便在短时间内入门,并减少学习的时间。我将在接下来的5分钟内为你介绍这些名词,希望你......
  • 5分钟搞懂Kubernetes:轻松理解所有组件
    之前我曾经提到了一系列关于服务网格的内容。然而,我意识到有些同学可能对Kubernetes的了解相对较少,更不用说应用服务网格这个概念了。因此,今天我决定带着大家快速理解Kubernetes中的一些专有名词,以便在短时间内入门,并减少学习的时间。我将在接下来的5分钟内为你介绍这些名词,希望你......
  • 关于使用appium自动化启动app时报错【问题:AttributeError: ‘NoneType‘ object has n
    报错原因:安装了最新版的appium3.0.0和selenium的最新版本,导致版本冲突从而导致报错:AttributeError:'NoneType'objecthasnoattribute'to_capabilities'解决方案:卸载selenium和appium,下载低版本的appium【下载appium的同时会下载依赖selenium】 pipinstall......
  • Net 高级调试之十三:托管堆的几个经典破坏问题
    一、介绍今天是《Net高级调试》的第十三篇文章,这篇文章写作时间的跨度有点长。这篇文章我们主要介绍经典的案例,如何查找问题,如何解决问题,最重要我们看到了问题,要有解决的思路,没有思路就是死路一条了,当然,这个过程也不是一帆风顺的,我是做了很多遍,最终猜得到了想要的东......
  • Netty IO 和 Thrift IO
    1.NettyIONetty是一个高性能的异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它极大地简化了网络编程,如TCP和UDP套接字服务器。异步和事件驱动:Netty基于事件驱动模型,可以处理成千上万个并发连接。高性能:优化的传输尝试减少资源消耗和延迟。......
  • 什么是Spring的依赖注入(Dependency Injection,简称DI)?
    控制反转IoC是一个很大的概念,可以用不同的方式来实现。其主要实现方式有两种:依赖注入和依赖查找依赖注入:相对于IoC而言,依赖注入(DI)更加准确地描述了IoC的设计理念。所谓依赖注入(DependencyInjection),即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依......
  • 在 Kubernetes 中无侵入安装 OpenTelemetry 探针
    背景OpenTelemetry探针OpenTelemetry(简称Otel,最新的版本是1.27)是一个用于观察性的开源项目,提供了一套工具、APIs和SDKs,用于收集、处理和导出遥测数据(如指标、日志和追踪信息)。应用程序遥测数据(如追踪、指标和日志)的收集是通过探针来完成的,探针通常以库的形式集成到应用......
  • .NET8 AOT和JIT的性能,谁更高呢?
    一:有人问:.NET8AOT和JIT的性能,谁更高呢?原文:.NET8AOT和JIT的性能,谁更高呢?其实这个答案非常明显,那就是JIT的性能更高。为什么?原因在哪?因为JIT是随时可能分层编译,动态PGO,CHRL,NonGCHeap,OSR。Quick等极致的优化措施(关于这些措施,可以参考公众号(jianghupt)之前的文章,有详细描......