为什么 Abp.AspNetCore.OData 需要 services.AddOData()?

Why does Abp.AspNetCore.OData require services.AddOData()?

在 aspnetboilerplate 文档中 tutorial 关于如何使用 Abp.AspNetCore.OData 模块。我研究这个模块作为创建我自己的 GraphQL 模块的参考。但是,我对为什么在声明对 OData 模块的依赖后仍然需要使用

显式配置服务感到有些困惑
services.AddOData();

在实际 Asp.NET 核心项目的 Startup class 中?

当然,这是必需的,因为 Abp.AspNetCore.OData 模块不这样做。但是,当使用 DependsOn 属性声明对特定模块的依赖时,ABP 的模块系统的思想的很大一部分不是自动注册所有依赖项吗?这样封装在ABP模块中就显得有些无用了

services.AddOData()在Startup.cs中调用;它需要修改才能在 ABP 模块中调用。

通常,services.AddXxx() 调用取决于较早添加的其他服务。

并非所有这些服务都将成为 ABP 模块,因此无法确保按照服务需要和开发人员希望的顺序调用它们。