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

TieredServiceRegistration项目就是分层服务注入实现层了,作为分层注入基础层,需要进行依赖注入的层都需要引用它。由于代码量比较大就不展示实现了。
可以前往Gitee下载免费的哦
TieredServiceRegistration:https://gitee.com/gun_s/tiered-service-registration
internal class ModuleInit : IModuleInitializer
{
public void Initialize(IServiceCollection services)
{
services.AddScoped<ClassOne>();
}
}
builder.Services.RunModuleInitializers(ReflectionScheduler.GetAllReferencedAssemblies());
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()}";
}
}
}
