gpt4 book ai didi

c# - 将一个服务注入(inject)另一个服务

转载 作者:行者123 更新时间:2023-11-30 14:57:43 27 4
gpt4 key购买 nike

我有一个 MVC 项目,它有两个服务,一个 OrganisationService 和一个 AgreementService,我的问题是一些组织属于一个组/父结构,在这种情况下,我需要获得属于任何一个的所有协议(protocol)组内的组织。

我的 OrganisationService 中已经有一个方法可以返回结构内所有组织的 ID 列表:

IEnumerable<int> GetRelatedOrganisationIds(int id)

我可以在 AgreementService 中创建一个方法来接受这个结果,但是我需要将这两个服务注入(inject)我的 Controller 并依次调用它们,例如

GetAgreementsByOrganisationIdList(IEnumerable<int> organisationIdList)

是否可以将 OrganisationService 注入(inject) AgreementService 以便它自己完成工作?例如,以下方法将在内部调用 GetRelatedOrganisationIds:

GetAgreementsByOrganisationId(int id)

我想将它注入(inject) AgreementService 的另一个原因是,我不需要记住检查组织是否处于组/父关系中,也不需要在每次我想获取协议(protocol)列表时查找 ID。

我还考虑过创建一个 OrganisationGroupParentInformationProvider 并将其注入(inject)到 AgreementService 中,我可能花了太多时间思考这个......你会怎么做?

最佳答案

是的,将一项服务注入(inject)到另一项服务的构造函数中会很好。但是,您可能需要考虑为 OrganisationService 创建一个接口(interface),并让您的 AgreementService 改为依赖于该抽象。

另一种方法是创建一个同时依赖于 AgreementService 和 OrganisationService 的新服务,并让该新服务承担责任。新服务当然会被注入(inject)到您的 Controller 中。

作为指导,请考虑将其全部置于 AgreementService 下是否会违反单一职责原则和/或接口(interface)隔离原则。如果是这样,请创建一个新服务。

关于c# - 将一个服务注入(inject)另一个服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408625/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com