.NET Core 中startup.cs 的ConfigureServices 和Configure 方法如何以及什么被调用?

Pan*_*iya 13 c# .net-core asp.net-core

Program.cs的Main方法是应用程序的入口点。正如您在我们创建任何项目时创建的 .NET Core 默认代码中看到的那样。

public static void Main(string[] args)
{
   CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
   WebHost.CreateDefaultBuilder(args)
       .UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)

在启动类中,我们有两个内置方法,即ConfigureServices和 ,Configure如下所示。

public void ConfigureServices(IServiceCollection services)
{
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道这些方法是如何调用的。我们知道,要调用任何方法,我们必须创建该类的一个对象,并使用该对象我们可以执行该方法,那么这些(ConfigureServicesConfigure)方法如何在不创建任何对象的情况下执行。

XPD*_*XPD 4

作为一个过于简单的解释,

WebHost.CreateDefaultBuilder(args)
Run Code Online (Sandbox Code Playgroud)

方法调用返回一个实现IWebHostBuilder. 然后UseStartup()扩展方法使用您提供的 Startup 类配置创建的 webhost 构建器。UseStartup()方法可以识别您的启动类,因为您指定为通用参数。UseStartup() 包含要调用的实现ConfigureServices以及 Configure您通过使用反射提供的方法。请注意,要调用方法,除了创建类的实例之外,还可以使用反射。