我试图在第一次运行Orchard CMS 2.0代码流时,即在任何UI呈现之前或用户选择了任何配方之前了解它。这是我目前所知道的:
- 执行从Orchard.Cms.Web,Program.cs,Main方法开始。
- Asp.NET核心框架调用Startup类的构造函数。
- ConfigureServices方法由Asp.NET核心框架调用。这为IServiceCollection添加了各种服务。
- 然后配置了一些服务。例如调用AddManifestDefinition方法。此时我们得到以下弹出窗口。我们得到这样一个弹出多个项目。 我不知道为什么?
醇>
- 在某些时候添加/配置所有服务,Asp.NET框架在Startup类中调用Configure方法。
- 最后一行是app.UseModules()。这指示代码使用中间件类ModularTenantContainerMiddleware和ModularTenantRouterMiddleware。
- 然后控制转到ModularTenantRouterMiddleware中的第3个私有变量。
醇>
这在许多方面令人困惑。
- 谁叫这个班级?在这个阶段似乎没有代码调用它。
- 如果Asp.NET核心框架调用它,那么为什么不首先调用ModularTenantContainerMiddleware类。那是在课程开始之前。
- 为什么控件不会出现在其他私有变量。
- 然后使用指向名为b__16_0的方法的下一个参数调用构造函数。 下一个变量是如何指向此方法的?这个方法究竟在哪里?
- 然后控制转到下面突出显示的行。
- 谁打电话给这个,为什么要转到第二行而不是第一行呢?
- 然后调用ShellSettingsConfigurationProvider,然后调用ShellSettingsManager。然后是ExtensionExpanderOptionsSetup,然后是ManifestOptionsSetup,然后是ManifestProvider,然后是FeaturesProvider,然后是ExtensionProvider ......然后是AmbientExtensionLoader,然后是TypeFeatureProvider。 如何调用所有这些类别。谁在打电话给他们?我没有看到任何这些电话。如果Asp.NET核心框架正在调用它们,那么如何确定它们的顺序?
醇>