这是关于qazxsw poi课程背后的设计原则:
Startup
我知道这个类需要包含像https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.1或ConfigureServices
这样的方法。
为什么Configure
不强制要求任何基类或接口以提高可读性?
有了这种设计方法,有人必须阅读文档并了解魔法方法名称,如CreateDefaultBuilder(args).UseStartup<Startup>()
或ConfigureServices
。
如果这是新的类设计思维模式的一部分,那么我在哪里可以阅读更多关于它的内容?
有几个原因导致它完成了它的完成方式。其中一个更明显的原因是,因为您可以将服务注入Configure
方法,例如
Configure
显然,你不能用接口,抽象类和继承来做到这一点。
它通过常规方法完成的第二个原因是,不仅有public void Configure(IAppBuilder app, IMyService myService)
{
myService.DoSomething();
}
方法,还有无数个依赖于环境的配置方法。
Configure/ConfigureServices
并且根据public void Configure(IAppBuilder app) { }
public void ConfigureDevelopment(IAppBuilder app) { }
public void ConfigureProduction(IAppBuilder app) { }
public void ConfigureStaging(IAppBuilder app) { }
public void ConfigureSomethingElse(IAppBuilder app) { }
的环境变量,将选择并执行不同的方法(如果未找到匹配的环境特定方法,则使用默认的ASPNET_ENVIRONMENT
)。
传统的OOP(继承/接口/抽象类)都不可能实现这一点。
这同样适用于ASP.NET Core的其他部分,例如Middlewares和Configure/ConfigureServices
Method。 Invoke
方法也可以注入依赖项,但为了调用下一个中间件,你只需要做
Invoke
并且不必担心下一个中间件需要或可能需要哪些依赖项。
要完成,还可以使用名为await next?.Invoke();
,Startup
,Configure
(作为后备)的默认方法名称(ConfigureServices
/ StartupDevelopment
)使用多个StartupProduction
类,ASP.NET Core将根据环境变量集选择正确的方法名称。
启动类可以从IStartup接口继承。
Startup
默认情况下,向导不会创建带有IStartup实现的模板文件。为什么不 - 可能是错误..