0
在常规的MVC的应用程序,Application_Start方法中(和其他)不是虚拟的。因此,这个方法必须通过反射来调用,并且有命名约定。但是他们为什么选择它呢?相反,我宁愿看基类的虚拟方法,并选择一个覆盖。现在我必须去看文档。为什么不在基类中声明处理方法?ASP.NET应用初始化
P.S.在新的ASP.NET Core中,Startup类甚至没有基类。
在常规的MVC的应用程序,Application_Start方法中(和其他)不是虚拟的。因此,这个方法必须通过反射来调用,并且有命名约定。但是他们为什么选择它呢?相反,我宁愿看基类的虚拟方法,并选择一个覆盖。现在我必须去看文档。为什么不在基类中声明处理方法?ASP.NET应用初始化
P.S.在新的ASP.NET Core中,Startup类甚至没有基类。
在以往的应用中,“项”是不是从托管.NET代码调用,命名约定是最直接的方式,想象static void Main
。
对于ASP.NET核心应用程序,条目为Main
方法,您可以在其中指定启动类,使用.UseStartup
方法的IWebHostBuilder
扩展名。有没有的IStartup
约束是因为它的签名是可以改变的,例如:
public void Configure(IApplicationBuilder app)
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
public void Configure(IApplicationBuilder app, IEmailService emailService)
参数通过IServiceProvider
解决,ConfigureServices
方法进行注册。
他们为什么要那样做?可能是因为ASP.NET从传统的ASP继承了这种方法。但原开发团队(包括本评论)之外的任何答案将是投机性的最好的。 – Richard