.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配置依赖注入结束。

相关推荐
冰茶_13 小时前
C#中常见的设计模式
java·开发语言·microsoft·设计模式·微软·c#·命令模式
獨枭14 小时前
Spring Boot 连接 Microsoft SQL Server 实现登录验证
spring boot·后端·microsoft
Zhen (Evan) Wang17 小时前
.NET 6 + Dapper + User-Defined Table Type
sqlserver·c#·.net·wpf
试着17 小时前
【新技术】微软 Azure Test Impact Analyzer (TIA) 全面解析
测试工具·microsoft·azure·测试覆盖率
qq_2979080118 小时前
c#简易超市充值卡程序充值消费查余额
经验分享·sqlserver·开源·c#·.net·开源软件
江沉晚呤时21 小时前
深入解析 ASP.NET Core 中的 ResourceFilter
开发语言·c#·.net·lucene
喵叔哟1 天前
16.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Github Action
微服务·github·.net
白熊1881 天前
【计算机视觉】CV实战项目 -深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案
人工智能·计算机视觉·.net
Java-云海1 天前
微软官网Win10镜像下载快速获取ISO文件
windows·microsoft·虚拟机·iso镜像·windows10系统