我有一个 MVC 项目,它有两个服务:OrganizationService 和AgreementService,我的问题是某些组织属于组/父结构,在这种情况下,我需要获取属于其中任何组织的所有协议群组。
我的 OrganizationService 中已经有一个方法,可以返回结构内组织的所有 id 列表:
IEnumerable<int> GetRelatedOrganisationIds(int id)
我可以在AgreementService中创建一个方法来接受此结果,但随后我需要将这两个服务注入到我的控制器中并依次调用它们,例如
GetAgreementsByOrganisationIdList(IEnumerable<int> organisationIdList)
是否可以将OrganizationService注入到AgreementService中,以便它可以自己完成工作?例如,以下方法将在内部调用 GetRelatedOrganizationIds:
GetAgreementsByOrganisationId(int id)
我想将其注入到AgreementService 中的另一个原因是,我不需要记住检查组织是否处于组/父关系中,也不需要在每次想要获取协议列表时查找ID。
我还考虑过创建一个 OrganizationGroupParentInformationProvider 并将其注入到AgreementService 中,我可能花了太多时间思考这个......你会怎么做?
是的,将一个服务注入到另一个服务的构造函数中是可以的。但是,您可能需要考虑为 OrganizationService 创建一个接口,并让您的 ContractService 依赖于该抽象。
另一种方法是创建一个依赖于AgreementService 和OrganizationService 的新服务,并让该新服务履行职责。新服务当然会被注入到您的控制器中。
作为指导,请考虑将所有内容都放在AgreementService 下是否会违反单一职责原则和/或接口隔离原则。如果是这样,请创建新服务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)