如何将Startup中ConfigureServices的服务注册逻辑拆分到独立类文件
ASP.NET Core 拆分ConfigureServices服务注册逻辑方案
核心实现方式是将业务服务的注册逻辑封装为IServiceCollection的扩展方法,这是.NET官方推荐的拆分方式,和框架内置的AddControllers、AddAutoMapper等方法实现规范一致。
第一步:编写独立服务注册文件(ExampleFileName.cs)
using Microsoft.Extensions.DependencyInjection; public static class ExampleFileName { public static IServiceCollection AddBusinessServices(this IServiceCollection services) { services.AddTransient<LocationService, LocationService>(); services.AddTransient<PersonService, PersonService>(); services.AddTransient<UserService, UserService>(); // 返回services支持链式调用,可按需求改为void返回 return services; } }
第二步:调整Startup.cs调用扩展方法
修改ConfigureServices方法,新增对上面定义的扩展方法的调用即可:
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); // 调用拆分后的服务注册逻辑 services.AddBusinessServices(); services.AddAutoMapper(typeof(Startup)); }
补充说明
- 扩展方法要求所属类为静态类,方法本身也必须是静态方法
- 后续新增业务服务的注册逻辑可以直接添加到
AddBusinessServices方法中,无需修改Startup类,符合开闭原则 - 你也可以根据业务模块拆分多个扩展类,比如订单服务注册、用户服务注册分开,进一步降低代码耦合
内容的提问来源于stack exchange,提问作者Ali.Rashidi
相关产品推荐
相关产品推荐

