• .Net利用Microsoft.Extensions.DependencyInjection配置依赖注入


    一、概述

    为了让接口程序更加模块化和可测试,采用依赖注入的方式调用接口方法。

    二、安装Microsoft.Extensions.DependencyInjection

    NuGet里面搜索Microsoft.Extensions.DependencyInjection,并进行安装。
    在这里插入图片描述

    三、代码编写

    3.1 创建Service 实现类
    /*************************************
    *  功    能:测试Service实现类
    *  创 建 人:********
    *  创建时间:2024-02-19
    * ***********************************/
    namespace Application
    {
        /// 
        /// 测试Service.
        /// 
        public class TestService : ITestService
        {
            /// 
            /// 测试查询.
            /// 
            public List<AgentGroup> TestSelect()
            {
                 var list =   SqlSugarORM.SqlSugarHelper.Db.Queryable<AgentGroup>().ToList();
                 return list;
            }
    
        
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    3.2 创建Service 声明类
    /*************************************
    *  功    能:测试Service 接口类声明类
    *  创 建 人:********
    *  创建时间:2024-02-19
    * ***********************************/
    
    namespace CadApplication.Service
    {
    
        public interface ITestService
        {
            /// 
            /// 测试查询.
            /// 
            List<AgentGroup> TestSelect();
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    3.3 控制器里面通过构造函数注入
    /*************************************
     *  功    能:测试控制器
     *  创 建 人:********
     *  创建时间:2024-02-19
     * ***********************************/
    namespace WebApi.Controllers
    {
    
        /// 
        /// 测试Controller.
        /// 
        [ApiController]
        [Route("[controller]")]
        public class TestController : ControllerBase
        {
            private readonly ITestService _testService;
            /// 
            /// 构造函数.
            /// 
            /// 
            public TestController(ITestService testService) 
            {
                _testService=testService;
    
            }
    
            /// 
            /// 测试查询.
            /// 
            [Route("TestSelect")]
            [HttpPost]
            public List<AgentGroup> TestSelect() 
            {
                return _testService.TestSelect();
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    3.4 在启动类里面配置注入的Service
    builder.Services.AddSingleton<ITestService, TestService>();
    
    • 1

    整体的Program.cs代码如下:

    
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    
    var builder = WebApplication.CreateBuilder(args);
    
    // Add services to the container.
    
    builder.Services.AddControllers();
    // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    builder.Services.AddSingleton<ITestService, TestService>().AddSingleton<DrawLineService>();
    
    
    
    var app = builder.Build();
    
    // Configure the HTTP request pipeline.
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    
    app.UseAuthorization();
    
    app.MapControllers();
    
    
    app.Run();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    四、结束

    至此.net配置依赖注入结束。

  • 相关阅读:
    LeetCode - 160. 相交链表(C语言,配图)
    Kotlin高仿微信-第54篇-扫一扫
    UER(腾讯)
    Vue2.0+AntvX6—节点 Node
    vue3实现塔罗牌翻牌
    2.9 深入GPU硬件架构及运行机制
    springboot在实体上格式化时间
    企业寄件管理方案教程
    资深博导:我以为数据预处理是常识,直到遇到自己的学生
    高性能计算环境下的深度学习异构集群建设与优化实践
  • 原文地址:https://blog.csdn.net/qq_27860623/article/details/136390672