wucy

前言

    Startup类相信大家都比较熟悉,在我们使用ASP.NET Core开发过程中经常用到的类,我们通常使用它进行IOC服务注册,配置中间件信息等。虽然它不是必须的,但是将这些操作统一在Startup中做处理,会在实际开发中带来许多方便。当我们谈起Startup类的时候你有没有好奇过以下几点

  • 为何我们自定义的Startup可以正常工作。
  • 我们定义的Startup类中ConfigureServices和Configure只能叫这个名字才能被调用到吗?
  • 在使用泛型主机(IHostBuilder)时Startup的构造函数,为何只支持注入IWebHostEnvironment、IHostEnvironment、IConfiguration。
  • ConfigureServices方法为何只能传递IServiceCollection实例。
  • Configure方法的参数为何可以是所有在IServiceCollection注册服务实例。
  • 在ASP.NET Core结合Autofac使用的时候为何我们添加的ConfigureContainer方法会被调用。
    带着以上几点疑问,我们将在本篇文章中探索Startup的源码,来了解Startup初始化过程到底为我们做了些什么。

Startup的另类指定方式

在日常编码过程中,我们通常使用UseStartup的方式来引入Startup类。但是这并不是唯一的方式,还有一种方式是在配置节点中指定Startup所在的程序集来自动查找Startup类,这个我们可以在GenericWebHostBuilder的构造函数源码中的找到相关代码[点击查看源码

相关文章: