将一个服务注入另一个服务

2024-07-04

我有一个 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(使用前将#替换为@)

将一个服务注入另一个服务 的相关文章

  • C#:秒到分钟到小时的转换?

    好吧 首先 我很确定我不会在这项作业中使用 TimeSpan 相反 当用户在文本框中输入秒数时 它会在消息框中显示秒 分钟和小时的公式系列 这就是我被困住的地方 我们应该用这个例子来检查我们的答案 7565 秒是 2 小时 6 分 5 秒
  • 函数 try 块什么时候有用?

    我想知道程序员何时使用函数 try 块 什么时候有用 void f int i try if i lt 0 throw less than zero std cout lt lt greater than zero lt lt std en
  • 在 C++ 中访问静态类变量?

    复制 C 对静态类成员的未定义引用 https stackoverflow com questions 272900 c undefined reference to static class member 如果我有这样的类 结构 head
  • QTreeView、QFileSystemModel、setRootPath 和 QSortFilterProxyModel 以及用于过滤的 RegExp

    我需要显示特定目录的 QTreeView 并且我想让用户能够使用 RegExp 过滤文件 据我了解 Qt 文档 我可以使用标题中提到的类来实现这一点 如下所示 Create the Models QFileSystemModel fileS
  • 对 .NET Remoting CAO 的暴力攻击

    我正在尝试使用 NET 远程客户端激活对象来在多次调用期间保留客户端的身份验证信息 而不是实现需要客户端在每次调用中发送会话 ID 的会话管理系统 正如 MSDN 所说 当客户端使用 new 运算符提交对服务器对象的请求时 激活请求消息将发
  • 如何检测动态绘制图形的点击?

    我正在面板上绘制文件和文件夹名称列表 并试图集体讨论检测用户是否单击文件 文件夹名称以及何时单击文件 文件夹名称以及他们实际单击的文件或文件夹名称的最佳方法 以下是我迄今为止编写的方法 我的第一个想法是用透明控件搭载每段文本 并以这种方式动
  • 当我将鼠标悬停在组合框项目上时引发事件

    当我将鼠标悬停在组合框项目上时 我无法找到要触发的事件 我正在使用 Windows 窗体来构建应用程序 我发现WPF有类似的东西 当我将鼠标悬停在组合框项目上时如何更改标签文本 https stackoverflow com questio
  • 我如何知道我的电子邮件是否已使用 Asp.net 被接收和阅读

    我需要知道如何查询已发送的电子邮件状态 Asp net中有没有特殊的类来实现这个功能 如果没有 你知道这样做的方法吗 如果您正在使用System Net Mail命名空间 您可以向电子邮件添加标头以请求已读回执 message Header
  • 使用c#在ms access中更新

    有人可以帮助我的代码有什么问题吗 它是一个更新函数 在我的调试过程中它可以正确执行 但它不会更新我的数据库 我已经在寻找这个问题的答案 但仍然没有成功 我还尝试创建一个新的数据库 希望它有问题 但仍然没有效果 private void up
  • 收据在打印文档中有重叠文本

    我正在 POS 项目中创建打印收据并附上输出的图片 我的问题是描述 数量 价格 金额的重叠 如何在这段代码的下一行显示数量 价格和金额 e Graphics DrawString Description new Font trebuchet
  • 如何(自动)生成 MVC + Entity 的 Web api 控制器或基因查询所有类型

    作为 MVC4 Entity WebAPI 的新手 我对仅仅拥有 GET POST 控制器处理程序和到数据模型的自定义映射感到沮丧 我想我要问的是有一个生成工具 例如从数据类创建控制器类 这样我就可以直接从数据执行简单的 GET 命令 制作
  • Protobuf 版本与 Qt 冲突

    我正在尝试将 protobufs v 3 3 2 与 Qt 5 9 1 一起使用 这适用于某些 Qt 应用程序 但前提是它们是命令行程序 当我使用 Qt 和 protobufs 创建 GUI 应用程序后 我收到以下错误 libprotobu
  • 安全地抛出在另一个线程上创建的异常 C#

    我想在线程A中捕获异常 然后将异常对象传递给线程B 并从线程B中抛出它 这样安全吗 Thread A try Code that throws exceptions catch Exception e sendToOtherThread e
  • 创建新选项卡并管理它们 - Selenium

    这是我的代码 var chromeOptions new ChromeOptions chromeOptions AddArguments headless driver new OpenQA Selenium Chrome ChromeD
  • Qt:如何处理用户按下“X”(关闭)按钮的事件?

    在 Qt 中 与用户单击窗口框架的 X 关闭 按钮 即此按钮 事件相对应的插槽是什么 如果没有这个插槽 在用户按下关闭按钮后是否有其他方法来触发功能 如果你有一个QMainWindow你可以覆盖closeEvent method inclu
  • 我是否需要显式关闭并处置 SQLConnection?

    SqlDataReader rdr null con new SqlConnection objUtilityDAL ConnectionString using SqlCommand cmd con CreateCommand try i
  • 在 EF core 中启用迁移吗?

    我正在开始使用 EF Core 2 0 我有一个针对 NET 4 6 1 的控制台应用程序 我有一个非常简单的模型类 以及这个上下文 public class ContextCore DbContext protected override
  • lldb:无法实现:无法获取变量的值

    我用这个命令行编译了一个cpp文件 g g test cpp 它在第 28 行抛出异常 我想通过检查 lldb 中的变量来调查原因 我在第 28 行设置了一个断点并运行a out在LLDB中 lldb n Process 84233 sto
  • 如何等待进程及其所有子进程退出?

    是否有一个等待方法 当目标进程及其所有子进程退出时会返回 看来 Process WaitForExit 只会等待目标进程 net 中有一个错误会给出您所追求的行为 WaitForExit 如果您异步读取输出 将等待所有子进程 p Start
  • Windows 窗体应用程序中异常处理的最佳实践?

    我目前正在编写我的第一个 Windows 窗体应用程序 我现在已经阅读了几本 C 书籍 因此对 C 必须处理异常的语言特性有了相对较好的了解 然而 它们都非常理论化 因此我还没有了解如何将基本概念转化为应用程序中良好的异常处理模型 有人愿意

随机推荐

  • groovy 中数组的重载 + 运算符

    我是一个时髦的新手 也许这是小菜一碟 但我想重载数组 列表的 运算符以编写如下代码 def a 1 1 1 def b 2 2 2 assert 3 3 3 a b 我不建议在全球范围内覆盖既定的行为 但是 如果您坚持 这将按照您的要求进行
  • vue-router 构建时显示空白页面

    我正在寻求帮助 我使用 vuejs 来制作我的应用程序 一切都很完美 但我这样做 npm run build 我提取 dist 文件夹并打开 index html 我有一个空白页面 当我在控制台中查看时 没有错误 main js impor
  • 通过固定内容传递鼠标滚轮事件

    理解这一点的最好方法是看看这把小提琴 http jsfiddle net mrtsherman 5bwWe 2 请注意 鼠标滚轮在红色框中的固定内容上没有任何反应 我想要可滚动的 div 滚动 万一小提琴死了 基本上我有一个可滚动的 div
  • MVC CORE 2.0.0 在每个页面上运行c#代码

    每次查看基于 layout cshtml 的任何页面时 我都需要运行一些 C 代码 我不想在每个controller cs文件中添加一些东西 只是像以前在ASP NET的MasterPage cs中那样放置一些核心内容 无法得到这个 在 M
  • Cakephp:如何将值传递到 JavaScript 文件中?

    我有一些 javascript 包含在视图中 并且我在此线程中使用了 inkedmn 的方法 将页面特定的 javascript 添加到 cakephp 中的每个视图 https stackoverflow com questions 14
  • 如何将 Jetty 与 Let's Encrypt 证书结合使用?

    我想使用来自的证书让我们加密 https letsencrypt org拥有大量 Jetty 服务器 问题之一是 Let s Encrypt 的证书有一个寿命 90 天 https letsencrypt org 2015 11 09 wh
  • LinearLayout 和 LinearLayoutCompat 有什么区别

    I know LinearLayoutCompat被意识到为我们提供了一些更新的方法 这些方法被添加到较高级别的 Android 到较低级别的 Android 中 我的问题是这个方法 linearLayout setPaddingRelat
  • 找不到node.js /socket.io/socket.io.js

    我不断收到错误消息 socket io socket io js 404 未找到 未捕获的引用错误 io 未定义 我的代码是 var express require express http require http var app exp
  • 无法使用 Grails DetachedCriteria 获取“count”和“groupBy”

    我有一个用于查询的域类 TourIndex Long tourId String country String location int availability more fields 我们使用一系列 动态 条件构建器来基于一系列配置进行
  • 在 Lyx 文档中插入编程代码

    在 Lyx 文档中插入 python C 代码的最佳方法是什么 该代码是少于 20 行的小示例 我的 Lyx 文档使用 Book 文档类 Orjanp 我更喜欢将列表作为子文档插入 因此直接从文件中获取代码 您可以进一步编辑并保持更新 您可
  • “PlaintextCorpusReader”对象没有属性“文件”

    我正在关注 NLTKtutorial http web mit edu 6 863 www fall2012 nltk ch1 3 pdf我在 Python 交互式 shell 中遇到了这个错误 而本书显示了另一个结果 知道如何解决这个问题
  • 当设备安装在 Windows/Mac 上时,在外部存储上创建的文件不会显示

    我有一个简单的应用程序 尝试将一些数据保存到 Android 设备 Nexus 4 上的外部存储 以便稍后在 PC Windows 或 Mac 上检索 写入成功 但当我尝试使用 Mac 上的 Android 文件传输或 Windows 上的
  • setadapter后获取ListView高度

    好吧 我试图在更改数据后获取列表视图高度 但它总是返回先前的高度 而不是实际的高度 所以当我设置 setadapter 时 它会得到旧值 例如 ActualHeight 100 Change data filter gt NewHeight
  • AbstractSecurityWebApplicationInitializer 与 AbstractAnnotationConfigDispatcherServletInitializer

    我正在尝试为基于 Spring 3 2 8 的纯 Java 配置应用程序添加安全性 我正在按照说明进行操作http docs spring io spring security site docs 3 2 2 RELEASE referen
  • HTML 中的 onBlur 和 onChange 属性有什么区别?

    何时叫一个人与另一个人比赛 是否存在 onChange 会被调用但 onBlur 不会被调用的情况 The onBlur当您离开对象但不一定更改其值时 会触发该事件 The onChange仅当您更改字段的值并且它失去焦点时才会调用事件 您
  • 如何完全杀死 Android 线程?

    我有一个服务 它有自己的线程在后台运行 我想终止该服务 包括线程 我像这样创建了线程并运行它 public class DaemonService extends Service private DaemonThread thread cl
  • 加载类和实例化类之间的区别

    有人可以解释一下类加载和实例化类之间的区别吗 当我们加载带有静态变量的类时 它是否也会在加载类的同时实例化 毕竟静态代码是类的一部分而不是它的单独实例 如果有人提供一个例子来帮助我更好地理解这一点 那将会很有帮助 这是一些很好的解释 带有示
  • 在 .NET 4.5 中为 websocket 握手设置自定义标头

    我正在尝试设置 C 客户端与第三方服务器的 WebSocket 连接 当我用 JS 客户端连接到同一服务器时 它建立连接并且一切正常 C 客户端连接到服务器 但由于某种未知原因 服务器响应 500 代码 使用 WireShark 进行调试表
  • 流行的自定义滚动条的顽固问题

    代码更新 http mawk3y net test brand php id 12 http mawk3y net test brand php id 12 原来的jquery插件在这里http manos malihu gr tuts j
  • 将一个服务注入另一个服务

    我有一个 MVC 项目 它有两个服务 OrganizationService 和AgreementService 我的问题是某些组织属于组 父结构 在这种情况下 我需要获取属于其中任何组织的所有协议群组 我的 OrganizationSer