一、概述
为了让接口程序更加模块化和可测试,采用依赖注入的方式调用接口方法。
二、安装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配置依赖注入结束。