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

一、概述

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

二、安装Microsoft.Extensions.DependencyInjection

在NuGet里面搜索Microsoft.Extensions.DependencyInjection,并进行安装。

三、代码编写

3.1 创建Service 实现类
csharp 复制代码
/*************************************
*  功    能:测试Service实现类
*  创 建 人:********
*  创建时间:2024-02-19
* ***********************************/
namespace Application
{
    /// <summary>
    /// 测试Service.
    /// </summary>
    public class TestService : ITestService
    {
        /// <summary>
        /// 测试查询.
        /// </summary>
        public List<AgentGroup> TestSelect()
        {
             var list =   SqlSugarORM.SqlSugarHelper.Db.Queryable<AgentGroup>().ToList();
             return list;
        }

    
    }
}
3.2 创建Service 声明类
csharp 复制代码
/*************************************
*  功    能:测试Service 接口类声明类
*  创 建 人:********
*  创建时间:2024-02-19
* ***********************************/

namespace CadApplication.Service
{

    public interface ITestService
    {
        /// <summary>
        /// 测试查询.
        /// </summary>
        List<AgentGroup> TestSelect();

    }
}
3.3 控制器里面通过构造函数注入
csharp 复制代码
/*************************************
 *  功    能:测试控制器
 *  创 建 人:********
 *  创建时间:2024-02-19
 * ***********************************/
namespace WebApi.Controllers
{

    /// <summary>
    /// 测试Controller.
    /// </summary>
    [ApiController]
    [Route("[controller]")]
    public class TestController : ControllerBase
    {
        private readonly ITestService _testService;
        /// <summary>
        /// 构造函数.
        /// </summary>
        /// <param name="testService"></param>
        public TestController(ITestService testService) 
        {
            _testService=testService;

        }

        /// <summary>
        /// 测试查询.
        /// </summary>
        [Route("TestSelect")]
        [HttpPost]
        public List<AgentGroup> TestSelect() 
        {
            return _testService.TestSelect();
        }
    }
}
3.4 在启动类里面配置注入的Service
csharp 复制代码
builder.Services.AddSingleton<ITestService, TestService>();

整体的Program.cs代码如下:

csharp 复制代码
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();
3.5 如果需要在某一个类里面单独调用也可以这样写
csharp 复制代码
 static void Main(string[] args)  
    {  
        // 配置依赖注入容器  
        var serviceCollection = new ServiceCollection();  
        serviceCollection.AddTransient<IGreetingService, GreetingService>(); // 注册服务及其实现  
  
        var serviceProvider = serviceCollection.BuildServiceProvider(); // 构建服务提供者  
  
        // 解析依赖项并使用  
        var greetingService = serviceProvider.GetService<IGreetingService>();  
        Console.WriteLine(greetingService.GetGreeting());  
    }  

四、结束

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

相关推荐
Maimai108081 天前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
rockey6271 天前
AScript异步执行与await关键字
c#·.net·script·eval·expression·异步执行·动态脚本
叫我少年1 天前
ASP.NET Core 最小 API 快速参考
.net·api
微软技术栈1 天前
Microsoft AI Genius 4.0 | 使用 GitHub Copilot SDK 升级开发者体验
人工智能·microsoft·github
samt0071 天前
智能体开发分享:实现值列表验证(LOV)的最佳开发实践
人工智能·microsoft
学术小白人1 天前
【检索通知】IEAS 2025、PSGAI 2025、SPIC2025 、AIBIEC 2025、AISNS2026等数个会议已检索
大数据·人工智能·microsoft·数字能源
步步为营DotNet2 天前
深入.NET 11:C# 14 在边缘计算数据处理的优化与实践
c#·.net·边缘计算
2501_941982052 天前
企业微信外部群消息的“接收回调与主动发送”闭环实现
microsoft
Maimai108082 天前
React 项目目录结构怎么设计:从基础分层到真实业务落地
前端·javascript·react.js·microsoft·前端框架
梦想的旅途22 天前
基于 RPA 自动化技术的私域机器人助手构建指南
microsoft·机器人·自动化·企业微信·rpa