.NET 8中如何在Program.cs添加Dependency Container的IoC配置
.NET 8 中调用自定义 DependencyContainer 的方法
你的自定义DependencyContainer类已经封装了服务注册逻辑,在.NET 8中无需额外封装公共方法,直接在Program.cs的顶级语句中调用即可,具体实现如下:
核心实现逻辑
.NET 8的Program.cs采用顶级语句模式,WebApplication.CreateBuilder(args)会生成包含服务集合的构建器,通过builder.Services即可获取IServiceCollection实例,直接传入你的RegisterServices方法完成注册。
完整代码示例
自定义DependencyContainer类(保持原有代码不变)
public class DependencyContainer { public static void RegisterServices(IServiceCollection service) { #region Services Injection service.AddScoped<IUserService, UserService>(); #endregion #region Repositories Injection service.AddScoped<IUserRepository, UserRepository>(); #endregion } }
.NET 8的Program.cs实现
var builder = WebApplication.CreateBuilder(args); // 直接调用自定义依赖注入注册方法 DependencyContainer.RegisterServices(builder.Services); // 保留项目默认的服务注册(如控制器、视图等,按需调整) builder.Services.AddControllersWithViews(); var app = builder.Build(); // 中间件配置(按项目需求调整) if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
与.NET 5的区别说明
.NET 5中需要在Startup.cs的RegisterServices方法中封装调用逻辑,而.NET 8简化了Startup的结构,将服务注册和中间件配置逻辑直接整合到Program.cs的顶级语句中,因此只需在构建器创建后直接调用DependencyContainer.RegisterServices(builder.Services)即可完成服务注入。
内容的提问来源于stack exchange,提问作者masoud mazloum
相关产品推荐
相关产品推荐

