众所周知,Program.cs的Main方法是应用程序的入口点。正如您在创建任何项目时创建的.net核心默认代码中所看到的。
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
在启动类中,我们有两种内置方法,即ConfigureServices
和Configure
,如下所示。
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
}
我只想知道如何调用这些方法。众所周知,要调用任何方法,我们都必须创建该类的对象,然后可以使用该对象执行该方法,然后执行这些(ConfigureServices
和Configure
)方法而不创建任何对象。
请帮助我深入了解。
答案 0 :(得分:1)
这些方法由ASP.NET Core框架调用。请注意,在您的Main
方法中,您可以进行以下调用:
.UseStartup<Startup>()
在此处指定用于启动的类,在本例中为Startup
。 ConfigureServices
和Configure
方法是按惯例调用的。如果在UseStartup
扩展名指定的类中找到了这些方法,则将调用它们。
答案 1 :(得分:0)
作为一个过于简化的解释,
WebHost.CreateDefaultBuilder(args)
方法调用返回用于实现IWebHostBuilder
的默认Webhost构建器的对象。然后,UseStartup()
扩展方法使用您提供的Startup类配置创建的Webhost构建器。 UseStartup()
方法可以标识您的启动类,因为您将其指定为通用参数。 UseStartup()可以保留实现以调用您通过使用反射提供的ConfigureServices
和Configure
方法。请注意,调用方法除了创建类的实例外,还可以使用反射。