You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:33:15