ASP.NET Core 6 中添加Startup.cs的整洁方式

如果您关注ASP.NET Core 6,那么您可能发现,对于ASP.NET Core 6项目,没有Startup.cs文件。我们发布了关于如何在ASP.NETCore 6项目中添加Startup.cs

在 ASP.NET Core 6 如何添加 Startup.cs

但是,如果我们能够改进,让它变得更好呢。好的,在这篇文章中,让我们看一看在ASP.NET Core6中添加Startup类的整洁方法.

为了以整洁的方式实现,我们将利用扩展方法。扩展方法允许您向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。ASP.NET Core 6.0使用和来引导ASP.NET Core应用程序。因此,我们将为这二个(WebApplicationBuilderWebApplication)类创建扩展方法

记住,这2个是ASP.NET Core 6.0新引入的。阅读Comparing WebApplicationBuilder to the Generic Host,并Exploring the code behind WebApplicationBuilder以了解有关此新引导模型的更多信息。

该类用于注册/配置服务或依赖项。由于扩展方法是静态方法,所以请使用名为的静态方法创建一个静态类。现在,将依赖项注册代码从移动到这里。如下

public static class RegisterStartupServices
{
    public static WebApplicationBuilder RegisterServices(this WebApplicationBuilder builder)
    {
        builder.Services.AddControllers();
        builder.Services.AddEndpointsApiExplorer();
        builder.Services.AddSwaggerGen();
        return builder;
    }
}

现在,让我们创建另一个静态类RegisterStartupMiddlewares,它扩展了用于中间件注册的类WebApplication。在这个类中,从中移动中间件注册码并将其引入方法。Program.cs中的SetupMiddleware

public static class RegisterStartupMiddlewares
{
    public static WebApplication SetupMiddleware(this WebApplication app)
    {
        // Configure the HTTP request pipeline.
        if (app.Environment.IsDevelopment())
        {
            app.UseSwagger();
            app.UseSwaggerUI();
        }

        app.UseHttpsRedirection();

        app.UseAuthorization();

        app.MapControllers();

        return app;
    }
}

完成后,让我们返回到Program.cs中更新代码并使用这些扩展方法。如下

var builder = WebApplication.CreateBuilder(args)
             .RegisterServices();

var app = builder.Build()
        .SetupMiddleware();

app.Run();

或者,我们可以让他更加整洁,并将其排成一行,如下

WebApplication.CreateBuilder(args)
    .RegisterServices()
    .Build()
    .SetupMiddleware()
    .Run();

现在,这看起来更加清晰、可读和易于管理。就是这么简单。