为什么ASP.NET Core不强制启动类型来实现接口

Tao*_*Gil 1 asp.net-core

ASP.NET Core配置依赖于Startup应具有一个类Configure方法和可任选地包括一个ConfigureServices方法.

我想知道为什么不强制这个类实现包含这两种方法的接口来获得强类型的所有好处.

我知道真正的原因在于框架设计者的想法无法实现,但任何人都可以给出他们为什么选择不使用界面的充分理由吗?

Dav*_*idG 5

一种可能性是由于依赖注入.假设有一个界面,它可能看起来像这样:

public interface IStartup
{
    void ConfigureServices(IServiceCollection services);
    void Configure(IApplicationBuilder app);
}
Run Code Online (Sandbox Code Playgroud)

但是,该Configure方法可以将额外的参数作为依赖注入框架的一部分.例如,我在这里有一个应用程序,如下所示:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //etc...
}
Run Code Online (Sandbox Code Playgroud)

所以现在不可能将这个界面变成一个界面,因为可能会传递任意数量的东西.

此外,ConfigureServices它实际上是可选的.

最后,确实存在一个名为的接口IStartup,但由于上述原因,我还没有看到它在任何地方使用过.

奖励:您甚至根本不需要启动类,所有工作都可以在通过调用和方法构建Web主机时完成.ConfigureServicesConfigure