2016-11-15 38 views
0

在常规的MVC的应用程序,Application_Start方法中(和其他)不是虚拟的。因此,这个方法必须通过反射来调用,并且有命名约定。但是他们为什么选择它呢?相反,我宁愿看基类的虚拟方法,并选择一个覆盖。现在我必须去看文档。为什么不在基类中声明处理方法?ASP.NET应用初始化

P.S.在新的ASP.NET Core中,Startup类甚至没有基类。

+1

他们为什么要那样做?可能是因为ASP.NET从传统的ASP继承了这种方法。但原开发团队(包括本评论)之外的任何答案将是投机性的最好的。 – Richard

回答

1

在以往的应用中,“项”是不是从托管.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方法进行注册。