【发布时间】:2018-11-12 00:49:45
【问题描述】:
这是关于此处解释的 Startup 类背后的设计原则:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.1
我了解该类需要包含ConfigureServices 或Configure 等方法。
为什么CreateDefaultBuilder(args).UseStartup<Startup>() 不强制要求任何基类或接口以提高可读性?
使用这种设计方法,必须有人阅读文档并了解诸如ConfigureServices 或Configure 之类的魔术方法名称。
如果这是一种新的类设计思维方式的一部分,那么我可以在哪里阅读更多关于它的信息?
【问题讨论】:
-
“魔术名称”是您必须自己创建的名称,并且没有记录在案。这允许您在每个环境中拥有一个 Configure/ConfigureServices,而这在包级别是未知的。抱歉,但这似乎是在咆哮。
-
公约。我认为它允许更大的灵活性,并且需要开发人员做更少的工作。取
ConfigureServices,默认为void。如果使用其他 DI 容器,则需要从ConfigureServices返回IServiceProvider。您将如何使用基类来做到这一点?总是要退货吗?此外,默认情况下,当您在 Visual Studio 中创建 ASP.NET Core 项目时,将为您创建这些方法。 -
请解释接口或抽象类如何缓解阅读文档的问题。
-
@CodingYoshi,对不起,没有关注。你能详细说明一下你的评论吗?
-
@CamiloTerevinto,关于您的“这允许您在每个环境中拥有一个 Configure/ConfigureServices” - 您能否详细说明一下或让我参考解释的文档
标签: c# design-patterns asp.net-core class-design