我的解决方案的结构如下
\nAPI -> 业务逻辑 - 数据访问
\nAPI 利用业务逻辑拥有的服务。例如项目服务。该服务有一个带有以下签名的方法Task<ProjectGetDto>GetProjectById(int id)。现在我开始意识到我的服务无法重用。因此,我添加了一个额外的“层”,即外观层,它位于 API 和业务逻辑之间。业务逻辑现在只真正处理实体。Facade 将这些实体转换为 Dtos 供 API 使用。这些服务现在是更多的存储库(我将重命名它们)。这意味着我可以在整个业务逻辑中重复使用这些存储库。
我正在努力解决的问题是,从技术上讲,任何东西都可以使用该业务逻辑。我有点想隐藏这些存储库,以便只有外观才能看到/使用它们。在该项目之外,任何东西都不能使用这些存储库。没有什么可以阻止 API 注入存储库并直接使用它。\n所以我开始研究内部类。然而,通过依赖注入,我只是看到如何让它工作。
\n我添加了一个扩展方法来在业务逻辑中添加所需的存储库。知道 API 无法看到它们。但是,如果我尝试将存储库注入 fa\xc3\xa7ade 中,则会收到一条错误消息,指出注入类的访问性低于尝试使用它的类。
\n我觉得依赖注入阻止我封装我的代码
\n我现在解决这些问题的方法是使外观层成为一个新项目,并让 API 引用外观项目,而外观现在引用业务逻辑。然而,我仍然觉得业务逻辑没有被封装,因为它仍然可以以我不希望的方式使用。
\n