0
点赞
收藏
分享

微信扫一扫

ASP.NET Core 分层服务注入思想实现


ASP.NET Core 分层服务注入思想实现

  • ​​背景概要​​
  • ​​分层服务注入是什么?​​
  • ​​代码实现​​
  • ​​如何使用​​

背景概要

  熟悉 ASP.NET Core 的同学都知道在开发ASP.NET Core 项目时都会使用到依赖注入(DI),这是就需要在启动项目的 ​​Program​​​ 或 ​​Startup​​​ 类中 builder 要用到的服务,但这里有个问题,就是分层架构,这个时候不服务同层的编码可能是不同的人,就会造成 ​​Program​​​ 或 ​​Startup​​ 类同时有多人编辑,甚至是造成服务注入需要专人来完成,为团队协作带来麻烦。如何规避呢,就是今天要说的 “分层服务注入”

分层服务注入是什么?

顾名思义,原始的注入方式需要在同一层的同一个文件(项目启动文件)中注入需要的服务,分层就是在各个项目层自己进行服务注入。

代码实现

Demo结构

ASP.NET Core 分层服务注入思想实现_Core

​TieredServiceRegistration​​项目就是分层服务注入实现层了,作为分层注入基础层,需要进行依赖注入的层都需要引用它。由于代码量比较大就不展示实现了。

可以前往Gitee下载免费的哦
​​​TieredServiceRegistration:https://gitee.com/gun_s/tiered-service-registration​​

如何使用

  • 服务层实现 ModuleInit 类 将该层服务注入

internal class ModuleInit : IModuleInitializer
{
public void Initialize(IServiceCollection services)
{
services.AddScoped<ClassOne>();
}
}

  • Program 类中新增

builder.Services.RunModuleInitializers(ReflectionScheduler.GetAllReferencedAssemblies());

  • Controller 实现

using Microsoft.AspNetCore.Mvc;
using ServiceOne;
using ServiceTwo;

namespace TieredServiceRegistrationWebApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class StringController : ControllerBase
{
private readonly ClassOne _classOne;
private readonly ClassTwo _classTwo;

public StringController(ClassOne classOne, ClassTwo classTwo)
{
_classOne = classOne;
_classTwo = classTwo;
}

[HttpGet(Name = "String")]
public string GetString()
{
return $"{_classOne.StrOne()}-{_classTwo.StrTwo()}";
}
}
}

  • 效果

ASP.NET Core 分层服务注入思想实现_asp.net_02


举报

相关推荐

0 条评论