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

.NET Core 依赖注入

时间:2023-04-24 10:25:29浏览次数:34  
标签:Core 依赖 IMyService myService NET public 注入

在.NET Core中,依赖注入(Dependency Injection,简称DI)是框架的一个重要特性,可以帮助我们解耦代码、管理对象生命周期以及提高可测试性等.一下是.NET Core中依赖注入的一些基本概念和用法:

  1、服务(Service):在DI中,服务即一个对象或者类型。用于完成特定的功能.例如,数据库访问、日志记录等都可以看作一个服务

  2、容器(Container):DI容器用于管理服务的注册和解析.在NET Core中。框架提供了一个内置的DI容器,可以扩展方法services.AddXXX()来注册服务。

  3、生命周期(Lifetime):在DI中,生命周期用于控制服务示例的创建和销毁.例如,一个服务可以是Singleton单例的,即全局仅创建一个实例;也可以是Scoped作用域的,即在同一请求范围内创建一个实例;还可以是Trasient瞬态的,即每次请求都创建一个新的实例

  4、依赖注入(Dependency Injection):依赖注入是指将一个对象所依赖的其他对象通过构造函数、属性或方法等方式,由容器自动注入给对象.在.NET Core中,主要使用构造函数注入的方式。

下面是一个.NET Core中使用依赖注入的示例:

  public interface IMyService

  {

    void DoSomething();

  }

  public class MyService:IMyService

  {

    public void DoSomething()

    {

      Console.WriteLine("Do something...");

    } 

  }

  public class MyClass

  {

    private readonly IMyService _myService;

    public MyClass(IMyService myService)

    {

      _myService=myService;

    }

    public void eat()

    {

      _myService.DoSomething)'

    }

  }

//如果是.NET Core:在Startup的ConfigureServices方法中注册服务和依赖注入

  service.AddTransient<IMyService,MyService>();

//如果是.NET6:在Program中注册服务和依赖注入

  builder.Services.AddTransient<IMyService,MyService>();

//在需要使用服务的类中。通过构造函数注入方式获取服务

public class MyController:Controller

{

  private readonly IMyService _myService;

  public MyController(IMyService myService)

  {

    _myService=myService;

  }

  public IActionResult Index()

  {

    _myService.DoSomething();

    return View();

  }

}

在以上示例中,IMyService是一个服务接口,MyService的类。在Startup的ConfigureServices方法中(在program中),将服务注册到容器中;在MyClass的构造函数中,使用构造函数注入的方式获取服务;在MyController中,同样使用构造函数注入的方式获取服务。

随堂笔记,侵权请联系作者删除!

标签:Core,依赖,IMyService,myService,NET,public,注入
From: https://www.cnblogs.com/wypd/p/17348588.html

相关文章

  • OpenAI的离线音频转文本模型 Whisper 的.NET封装项目
    whisper介绍OpenAI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的Whisper神经网络,且它亦支持其它98种语言的自动语音辨识。Whisper系统所提供的自动语音辨识(AutomaticSpeechRecognition,ASR)模型是被训练来运行语音辨识与翻译任务的,它们能将各种语言的语音变成文......
  • electron-builder 打包依赖文件放入指定目录
    1.C:\Users\Liper\AppData\Local\electron-builder\Cache2.nsis-resources-3.4.1.7z3.nsis-3.0.4.1.7z4.winCodeSign-2.6.0......
  • 关于在visual Studio 2022中无法找到 ASP.NET Core Web Application 或 ASP.NET Core
    在学习ASP.NETCoreWebApplication时发现无论如何都无法找到这个模板,在翻遍论坛后都没有看到解决的方法,在我下载 visualStudio2017中终于找到了但是,你会发现他只能选择.netcore2.0这肯定是不符合我们写代码的,因为他太老了,但在2022中确实找不到    这......
  • .net使用nacos配置,手把手教你分布式配置中心
    .net使用nacos配置,手把手教你分布式配置中心Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。这么优秀的分布式服务管理平台,怎么能不接入呢?nacos的安装和使用这里就不细说了,可以参考网上教程和官方文档。https://nacos.io/zh-cn/docs/quick-start.htm......
  • .NET CORE开源 DDD微服务 支持 多租户 单点登录 多级缓存、自动任务、分布式、日志、
    源代码地址https://github.com/junkai-li/NetCoreKevin基于NET6搭建跨平台DDD思想WebApi架构、IDS4单点登录、多缓存、自动任务、分布式、多租户、日志、授权和鉴权、CAP、SignalR、docker部署 如需简约项目可直接去除项目引用解耦设计都可以单独引用架构默认全部引用并启动......
  • Netty
    1.Netty是什么Netty是一个高性能、异步事件驱动的网络编程框架,它基于NIO技术实现,提供了简单易用的 API,用于构建各种类型的网络应用程序。Netty应用场景 服务器间高性能通信,比如RPC、HTTP、WebSocket等协议的实现分布式系统的消息传输,比如Kafka、ActiveMQ等消息队列游......
  • OpenAI的子词标记化神器--tiktoken 以及 .NET 支持库SharpToken
    经过Tokenize之后,一串文本就变成了一串整数组成的向量。OpenAI的 Tiktoken 是更高级的Tokenizer,编码效率更高、支持更大的词汇表、计算性能也更高。OpenAI在其官方GitHub上公开了一个开源Python库:tiktoken,这个库主要是用力做字节编码对的。字节编码对(BytePairEncoder......
  • [CMU 15-418] Lecture2 A Modern Multi-Core Processor
    本系列文章为CMU15-418/15-618:ParallelComputerArchitectureandProgramming,Fall2018课程学习笔记课程官网:CMU15-418/15-618:ParallelComputerArchitectureandProgramming参考文章:CMU15-418notes相关资源与介绍:CMU15-418/StanfordCS149:ParallelComput......
  • telnet
    1.openbsd-inetd+ telnetdsudoapt-getinstallopenbsd-inetdsudoapt-getinstalltelnetdsudogedit/etc/inetd.conftelnetstreamtcpnowaitroot/usr/sbin/tcpd/usr/sbin/in.telnetdsudo/etc/init.d/openbsd-inetdrestartnetstat-a......
  • ASP.NET Core Web API 流式返回,逐字显示
    Websocket、SSE(Server-SentEvents)和长轮询(LongPolling)都是用于网页和服务端通信的技术。Websocket是一种全双工通信协议,能够实现客户端和服务端之间的实时通信。它基于TCP协议,并且允许服务器主动向客户端推送数据,同时也允许客户端向服务器发送数据。SSE是一种单向通信协议,允......