首页 > 其他分享 >15_依赖注入和控制反转

15_依赖注入和控制反转

时间:2024-03-04 23:22:34浏览次数:43  
标签:依赖 服务 IGreetingService 反转 void Greet 15 string

依赖注入和控制反转

  1. 在.NET中,依赖注入 (DI) 是一种技术,用于实现控制反转 (IoC),它允许将类的依赖关系通过构造函数、方法或属性来注入。这样可以提高代码的模块化和可测试性。

  2. IServiceCollection 是一个服务集合,用于注册应用程序中的服务和组件。这些服务之后可以通过 IServiceProvider 来解析和提供。

代码示例

下面是一个简单的代码示例来说明这个概念:

首先安装Microsoft.Extensions.DependencyInjection依赖包.

using Microsoft.Extensions.DependencyInjection;
using System;
namespace DependencyInjectionExample
{
    // 定义一个接口
    public interface IGreetingService
    {
        void Greet(string name);
    }
    // 实现接口的服务
    public class GreetingService : IGreetingService
    {
        public void Greet(string name)
        {
            Console.WriteLine($"Hello, {name}!");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            // 创建服务集合并注册服务
            var services = new ServiceCollection();
            services.AddTransient<IGreetingService, GreetingService>();

            // 构建服务提供者
            var serviceProvider = services.BuildServiceProvider();
            // 从服务提供者中获取服务实例
            var greetingService = serviceProvider.GetService<IGreetingService>();
            greetingService.Greet("World");
        }
    }
}
  1. 在这个例子中,我们定义了一个 IGreetingService 接口和一个 GreetingService 类,它实现了这个接口。
  2. Main 方法中,我们创建了一个 ServiceCollection 对象,并使用 AddTransient 方法注册了 GreetingService 作为 IGreetingService 的实现。
  3. 然后,我们通过 BuildServiceProvider 方法创建了一个 IServiceProvider 对象,并使用它来获取 IGreetingService 的实例。
  4. 最后,我们调用 Greet 方法来输出问候信息。

标签:依赖,服务,IGreetingService,反转,void,Greet,15,string
From: https://www.cnblogs.com/cookie2030/p/18053001

相关文章

  • p7915-solution
    P7915Solutionlink考虑枚举第一个操作选L还是R。这样原序列就被分为了两个栈,用四个指针\(p1,p2,p3,p4\)分别指向这两个栈的栈顶栈底。感性理解一下,某一个栈的栈顶\(x\)可以被pop当且仅当某一个栈的栈底等于\(x\)。于是直接dfs,每次优先选L,同时确定第\(2n-i+1\)......
  • Codeforces edu 156 C题
    https://codeforces.com/contest/1886/problem/C思路这道题的核心问题是:给你一个字符串s,你要删除k个字母,你要找出删除k个字母后字典序最小的s。为了使字典序最小,我们就应该把字符串删成递增的样子stringtmp="";//tmp用来存删完后的字符串s+='$';//s的末尾加一个比'......
  • 奥特曼净资产破20亿美元;苹果计划通过线上渠道发布 2024 款 iPad 和 Mac丨 RTE 开发者
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • AtCoder Beginner Contest 315
    \[\large\text{Round6:AtCoderBeginnerContest315}\]一言:愿悲、爱恋、你和宇宙以及那颗星辰,能够永远拥抱我们。——THEBEYOND-機動戦士ガンダム40周年纪念曲这场打的一般,主要还是一开始网卡爆了把心态弄得很不好,一定程度上影响了发挥。\(\text{G:Ai+Bj+Ck......
  • VS2015环境下Crystal Reports(水晶报表)的安装使用
     1.首先下载CrystalReports13对于VisualStudio2015支持的2个文件。CRforVS_13_0_17CRforVS_redist_install_64bit_13_0_17如果你使用的是其它版本的VisualStudio,请查看官方给出的文档,下载相应的版本,具体请参考次地址:http://scn.sap.com/docs/DOC-7824注意:版本号后边的......
  • 建构漫谈1500字
    在当今这个信息化迅速发展的时代,系统架构已经成为了软件工程乃至整个信息技术领域的一个重要分支。当我手捧《架构漫谈》这本书时,心中不免充满了期待。这不仅仅是一本书,更是一段探索软件深层次结构与设计哲学的旅程。随着每一章节的翻阅,我仿佛跟随着作者的思路,穿梭在复杂系统的丛......
  • LY1156 [ 20230320 CQYC省选模拟赛 T3 ] 集结
    题意平面上\(n\)个点,每个点按照曼哈顿距离移动。要求在\(m\)时刻后,所有点都处于同一位置。求方案数。Sol平凡地,考虑曼哈顿距离转切比雪夫距离。这样\(x\)和\(y\)就完全独立了。考虑先算\(x\)的贡献,再算\(y\)的贡献。判断一下是否能到当前的\(x\)或\(y\)就......
  • 文心一言 VS 讯飞星火 VS chatgpt (207)-- 算法导论15.4 4题
    四、说明如何只使用表c中2*min(m,n)个表项及O(1)的额外空间来计算LCS的长度。然后说明如何只用min(m,n)个表项及O(1)的额外空间完成相同的工作。要写代码的时候,请用go语言。文心一言:在只使用2*min(m,n)个表项和O(1)额外空间来计算LCS(LongestCommonSubsequence)的长......
  • P1156 垃圾陷阱
    原题链接题解太妙了如果能出去,那么出去的时间一定为让我出去的那个垃圾掉落的时间,且在此之前我所在的高度能撑到我垃圾掉落如果出不去,我肯定一直呆在井底不动所以我们可以以高度为变量设每个高度能撑到的最久的时间而每个垃圾在拿到的一瞬间要么吃要么搭,所以我们穷举,两个都......
  • 洛谷P1580 yyy loves Easter_Egg I
    洛谷P1580yyylovesEaster_EggI洛谷传送门调试的有点惨痛的简单字符串模拟题目Code/***************************************************************Problem:*Author:Vanilla_chan*Date:*E-Mail:[email protected]*************************......