我应该如何订购 DI/IOC 的 ctor 参数?

2024-03-22

我是一个 DI 新手,所以如果这是错误的方法或一个愚蠢的问题,请原谅我。

假设我有一个创建/更新订单的表单,并且我知道它将需要检索要显示的产品和客户列表。我想传递它正在编辑的 Order 对象,但我还想注入 ProductsService 和 CustomersService 作为依赖项。

因此,我希望我的 IoC 容器(无论我使用哪一个)来提供服务,但将由调用代码来提供要编辑的 Order 对象。

我是否应该将构造函数声明为将 Order 对象作为第一个参数,然后是 ProductsService 和 CustomersService,例如:

public OrderForm(Order order, ProductsService prodsSvc, CustomersService custsSvc)

...或者应该依赖项先出现而 Order 对象最后出现,例如:

public OrderForm(ProductsService prodsSvc, CustomersService custsSvc, Order order)

有关系吗?这取决于我使用哪个 IoC 容器吗?或者,还有更好的方法?


马特,你不应该将普通参数与依赖项混合在一起。由于您的对象将在 IoC 容器的内部创建,因此您将如何指定必要的参数?

混合依赖和普通参数将使程序的逻辑更加复杂。

在这种情况下,最好声明依赖属性(即从构造函数中删除依赖项)或初始化orderIoC构建后的字段订单并解决了它的依赖关系(即从构造函数中删除正常参数)。

您还可以声明所有参数,包括order作为依赖项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何订购 DI/IOC 的 ctor 参数? 的相关文章

  • 在 PHP 控制器中调用模型功能的最佳选择

    我正在使用 PHP 构建自定义 MVC 框架 我的问题是当我想通过控制器类访问任何模型类时 我见过的一种方法是通过使用 get 和 set 等神奇方法的注册表设计模式 尽管 PHP get 和 set 被一些人认为是不好的做法 我读过有关通
  • 简单注入器从命名空间注册所有服务

    我的服务接口的命名空间为Services Interfaces 服务接口的实现有一个命名空间Web UI Services 例如 我有 2 个服务实现 IUserService 需要注册到UserService ICountryServic
  • Dagger 2:无法解析匕首组件的符号

    我想锻炼这个Dagger 2 车载电机 http code tutsplus com tutorials dependency injection with dagger 2 on android cms 23345例子 除了我的 Grad
  • 在 .NET Core (MS.DI) 中注册具有类型约束的泛型类型

    我有一个通用界面IPipelineBehavior
  • Action Filter 中的 UnitOfWork 似乎正在缓存

    我有一个使用 IoC Unity 的 MVC 3 站点 我的模型是使用 EF4 和 POCO 生成的 我正在使用操作过滤器来提交我的工作单元 public class UseUnitOfWorkAttribute ActionFilterA
  • 如果在为 MVC 4 设置依赖项解析器之前使用验证,简单注入器会失败

    我们有一个基于 ASP NET MVC 4 的应用程序 该应用程序已有几年历史 我正在努力消除它的一些技术债务 我正在做的事情之一是引入依赖注入 以便我们可以更好地将业务逻辑与数据访问实现分开 并减少编写隔离单元测试的痛苦 我使用了简单注射
  • 龙目岛和吉斯注射液

    我是 lombok 和 guice 注入的新手 我可以了解一般概念 但我遇到了一些我不理解的代码 并且由于语法而无法搜索 以下是代码 有人可以帮助我理解吗 import com google inject Inject import lom
  • 使用选项模式的依赖注入

    我正在尝试从 appsettings 文件加载一些设置 但在使用选项模式时加载列表的方式遇到了一个小问题 假设我有以下类 用于加载设置 public class Application public string Name get set
  • 使用简单注入器进行方法级属性拦截

    借助 Unity 我能够快速添加基于属性的拦截 如下所示 public sealed class MyCacheAttribute HandlerAttribute ICallHandler public override ICallHan
  • 什么是依赖注入的 Pythonic 方式?

    介绍 对于 Java 依赖注入作为纯 OOP 工作 即您提供要实现的接口 并在框架代码中接受实现定义的接口的类的实例 现在对于 Python 您可以执行相同的操作 但我认为该方法对于 Python 而言开销太大 那么如何以 Pythonic
  • 如何在我的类型类中访问我的服务(DependencyInjection)?

    我创建了一个服务 DependencyInjection 并在控制器上将其用作 this gt get service name gt someMethod 我想知道如何在我的表单类上使用它 这是我的课程示例形式 namespace Com
  • 定义 WebActivator.PreApplicationStartMethod 类的初始化顺序

    我有几个 WebActivator PreApplicationStartMethod 装饰类 一个用于 Ninject 另一个用于 AwesomeMVC 第三个用于后台任务调度程序 问题是调度程序类需要利用 IoC 容器解决的依赖关系 我
  • PHP - 多个不同的数据库依赖注入类

    我花了过去几个小时试图找到 最佳 最合乎逻辑的方法的答案 以编写一个 php 数据库类以同时连接到一个 postgresql 数据库和一个 mysql 数据库 另外 我想采用依赖注入设计 但对整个概念还是陌生的 到目前为止我已经想出了 cl
  • AngularJS:如何在 AngularJS 中使用或注入第三方库

    我是 Angular 和 Deployd 的新手 想知道如何一起使用它们 我发现 Deployd 网站中的示例很好 但它只消耗其余 API 数据 我想了解如何将 Deployd 作为 AngularJS 中的服务 例如 通过部署中可用的收集
  • 通过 IoC 容器实例化 WCF 服务

    是否可以使 WCF 运行时通过 IoC 容器而不是通过其通常的进程来实例化服务 此外 考虑到容器的类型生活方式配置与服务的 InstanceContextBehavior 之间存在潜在冲突 这种方法会是一个糟糕的主意吗 我知道我可能完全问错
  • 具有通用存储库、依赖项注入和 SoC 的 EF6 Code First

    经过大量阅读和尝试之后Entity Framework最新稳定版本 6 1 1 我读到了很多关于是否使用存储库的矛盾EF6 or EF一般来说 因为它是DbContext已经提供了一个存储库并且DbSet the UoW 盒子外面 让我首先
  • Ninject 绑定所有实现相同接口的类

    我有一个接口类 public interface IStartUpTask bool IsEnabled get void Configure 我有多个类实现相同的接口 其中一个类如下所示 public class Log4NetStart
  • Windows 8 Metro 应用程序的依赖注入框架

    我似乎找不到 Windows 8 Metro 应用程序的依赖注入框架 win8 Metro应用程序有框架吗 Ninject 尚不支持 win8 Metro 那么有人有建议吗 城堡 春天 你可以尝试Unity 3 0 for NET4 5 预
  • 依赖注入系统中的事件朝哪个方向发展?

    上或下 我是一个非常注重视觉的人 我将我的应用程序视为一个层次结构 顶部是根 底部是叶子 我还了解到 在 DI 系统中 容器不知道其所包含对象的职责 功能 相反 所包含的对象知道它们的上下文 因为上下文 依赖项 被注入 UP 非 DI 方式
  • 依赖注入的惰性解析

    我有 net 课程 我使用 Unity 作为 IOC 来解决我们的依赖关系 它尝试在开始时加载所有依赖项 Unity中有没有一种方法 设置 允许在运行时加载依赖项 还有更好的解决方案 Unity 2 0 中对 Lazy 和 IEnumera

随机推荐

  • 如何在 razor MVC asp.net 中组合两个视图模型

    假设我有一些模型如下 public class Model1 public int ID get set public string Name get set public class Model2 public int ID get se
  • 是否可以将现有的 Windows Phone 8 应用程序更新到 Windows Phone Store 8.1

    我在 Windows Phone 应用商店中有一个 Windows Phone 8 0 应用程序 我想将我的应用程序更新到 Windows Phone 商店 API 而不是 Windows Phone Silverlight 8 1 以准备
  • liferay 7 中 liferay-portlet.xml 的等效文件是什么?

    我想在 liferay 7 中添加自定义用户通知 为此 如果我使用 liferay 6 2 我必须输入类似用户通知定义 and 用户通知处理程序类在 liferay portlet xml 中 但在liferay中我想问一下把这些条目放在哪
  • 如何从 Amazon Kinesis 流获取最新记录?

    我想从 Amazon Kinesis 流中获取最新记录 我打算从该记录中提取时间戳 并将其与消费者应用程序检查点的最后一个记录的时间戳进行比较 以检查消费者是否落后 我无法使用最新的分片迭代器类型 这是因为 LATEST 指向最近的记录之后
  • Richfaces modalPanel 使用 Ajax 加载

    我在我的项目中使用了 richfaces 特别是标签 rich modalPanel 它允许在页面中显示弹出窗口 为此 我添加了这样的弹出窗口
  • 如何将 reCAPTCHA 设为必填字段?

    我正在使用 Google reCAPTCHA 并且能够将 CAPTCHA 组件添加到表单内的页面中 但是当我提交表单时 没有进行验证来检查验证码是否已解决 提交表单时如何验证验证码组件已被解析 或者 换句话说 如何使我的验证码组件成为必需的
  • NestJS,如何以及在哪里构建响应 DTO

    我一直在使用Java Spring框架来开发微服务 最近 我开始探索 NestJS 并有一个关于构建响应 DTO 的问题 在春天 控制器是轻量级的 它们将调用交给服务层 服务层实现业务逻辑 最后 它们调用负责构建响应 DTO 的 Mappe
  • 在 d3.js 中绘制滚动/移动平均值

    寻找一种在 d3 中绘制滚动 移动平均值的方法 而无需提前操作数据 所以我想通过对每个数据点及其后面的两个数据点进行平均来平滑这条线 我的代码是这样的 var data 3 66 2 76 5 20 1 3 8 90 2 5 70 var
  • 当应用程序处于后台/未运行时,不打开通知单击上的特定活动

    仅当打开应用程序并执行通知单击时 通知单击才会启动指定的活动 如果应用程序处于后台 未运行并且执行了通知单击 则应用程序的 MainActivity 将打开 简而言之 就像应用程序按照 Activity 堆栈正常打开一样 而不是打开 Pen
  • 填充无效且无法移除

    来自评论 一旦我手动将填充设置为 无 问题就消失了 这段代码有什么问题吗 VS2010确实可以编译它 但是从VS2010运行时出现错误 说cs close 填充无效 有人可以帮忙吗 谢谢 public static byte Decrypt
  • 如何从javascript中的字符串中删除“,”

    原始字符串是 a d k 我想删除所有 并使其达到 adk 我尝试了下面的代码 但它不起作用 a d k replace 您没有将替换方法的结果分配回您的变量 当您调用replace时 它会返回一个新字符串 而不修改旧字符串 例如 将其加载
  • Wordpress - 选择/加载子菜单项页面时突出显示父菜单项

    我有一个基本菜单 一些菜单项有子菜单 我对 WordPress 的经验很少 现在没有时间深入研究细节 所以我的问题是 当用户导航到子菜单页面之一时突出显示顶部菜单项的最简单方法是什么 我尝试使用 javascript 和纯 css 通过元素
  • 具有动态高度的 CSS 三角形

    想知道是否有人可以帮助解决我遇到的 css 问题 请参阅此 jsbin http jsbin com uviyat 2 edit http jsbin com uviyat 2 edit 注意 较长的措辞示例 如何使三角形箭头指示器垂直缩放
  • 从 XSL 创建 XSL

    我正在尝试从 XSLT 样式表动态生成 XSLT 文档 当然 原则上这是可行的 但我没有让命名空间正常工作 我希望生成的 XSLT 元素带有 xsl 前缀
  • jquery ui滑块,如果满足某些条件则停止滑动

    使用 jQuery UI Slider 我试图找出如何使滑块在满足某些条件后停止工作 有任何想法吗 我认为在 开始 部分停止事件传播会起作用 但是 事实并非如此 所以我还是一无所知 迷失了方向
  • 您可以使用 RedirectToAction 传递模型吗?

    我正在使用 mvc 2 候选版本 并且想知道是否有任何方法可以使用 RedirectToAction 将模型传递给操作 例如 我有一个编辑操作 它采用 ID 从数据库加载记录 在文本框中显示当前值 并让用户编辑并单击提交 public Ac
  • 无法在 Zsh 中使用颜色;文字有效,但没有出现颜色

    我刚买了一台 Mac 我正在尝试用颜色自定义我的 Zsh 提示符 但我无法让颜色起作用 我不确定是因为 LS COLORS 还是什么原因 这是我的 zshrc export CLICOLOR 1 export LSCOLORS ExFxBx
  • C# 没有私有变量的自定义 getter/setter

    我最近学习了c 所以当我学习写属性时 我被教这样做 public string Name get set 汽车属性太棒了 但现在我想做一些更复杂的事情 所以我需要编写一对自定义访问器 private string Name public s
  • 在 for 循环中重新创建 ArrayList 的最快方法

    在Java中 对一个巨大的矩阵X使用以下函数来打印其列不同的元素 create the list of distinct values List
  • 我应该如何订购 DI/IOC 的 ctor 参数?

    我是一个 DI 新手 所以如果这是错误的方法或一个愚蠢的问题 请原谅我 假设我有一个创建 更新订单的表单 并且我知道它将需要检索要显示的产品和客户列表 我想传递它正在编辑的 Order 对象 但我还想注入 ProductsService 和