问题标签 [dependency-injection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - IoC 和用户界面
我正在尝试在我的应用程序中使用 IoC 进行依赖注入的最佳方式,但是我有一个小问题。
我在 WPF 应用程序中使用 MVP 模式的松散实现。本质上,演示者类被实例化,视图和任务(例如 EmployeePresenter 的 IEmployeeView 和 IEmployeeTask)被注入到演示者中。
我想使用 IoC 容器(我正在尝试 Unity,尽管我猜这也会发生在其他人身上,例如 ninject 或 Structure Map)而不是手动注入这些实例,但是如果演示者是创建的(或从IoC 容器)在异步委托调用或事件线程(例如非 STA 线程)上创建 WPF 窗口的新实例会引发以下异常:
当前构建操作(构建键 Build Key[ namespace .Window1, null])失败:调用线程必须是 STA,因为许多 UI 组件都需要这个。
现在,我知道新窗口实例等需要是 STA,但是即使必须在 STA 线程上创建 UI,是否可以使用 IoC 容器进行依赖注入?
从这个问题来看,被解析的类/类型似乎是在解析时实例化的,而不是在其注册时...
design-patterns - 如果在对象类型上,寻找一种设计模式来替换 huuuge
好的,所以我正在寻找一些大致如下所示的代码:
现在一种方法是让所有o
用作参数的对象实现一个接口,如
但问题是我不希望我的所有对象都实现这个接口——do something 方法的逻辑并不真正属于它们。我应该使用什么模式来处理这个问题?
我怀疑类似的一系列实现
可能会更好。对于我想要执行的每个对象类型,我都有一个实现,但是我遇到了这个新问题。我有时需要一种方法
但这是否需要对其进行大规模切换?我是否应该定义一个带有大量方法的类,例如
与无法在运行时添加新类型的通用版本相比,这存在问题。有什么巧妙的方法可以用 GetPropsGeneric 中的 DI 容器来解析容器吗?谢谢!
dependency-injection - OSGi/Felix 声明式服务:如何过滤要绑定的服务?
我正在使用 Apache Felix 及其声明式服务 (SCR) 来连接包之间的服务依赖关系。
例如,如果我需要访问 java.util.Dictionary 我可以说以下内容让 SCR 提供:
现在,我有多个可用的 Dictionary 服务,我想使用“name”服务属性(我只想要“name=myDictionary”)过滤它们。我可以使用代码(使用 ServiceTracker)来做到这一点,但我宁愿在 @scr 注释中指定过滤器。
objective-c - Cocoa 的依赖注入框架?
Interface Builder 可用于 Cocoa 应用程序中的基本依赖注入,但是当您不想在 NIB 文件中实例化对象时,是否有人知道用于 Objective-C/Cocoa 的更完整的依赖注入框架?
编辑
澄清一下,我承认 IB 可用于基本 DI,但我正在寻找一个功能更完整的框架,包括单独的生产和测试配置,类似于 Groovy 或 Springs。
c# - 从 Windsor Container 中删除或覆盖组件
我正在尝试完成一件看似超级简单的事情:从我的单元测试中,我想用模拟/假对象替换正在解析的类型。
例如:xml 配置声明服务 IInterface 的组件应解析为 ClassA。很好,但是从我的单元测试中,我希望类型解析为 FakeClassA。我不能为此使用 container.AddComponent,因为“已经为给定键注册了一个组件......”。
dependency-injection - 与城堡温莎的多接口注入
当容器中有多个实现时,如何让 Castle Windsor 在运行时选择正确的接口植入。
例如,假设我有一个名为 IExamCalc 的简单界面,它可以计算某人在考试中的表现。
不,我们有几个这样的实现,例如,
假设正在通过 Windor 重新使用 ExamMarkService 我如何确保在构造函数中注入了正确的实现,这是多租户问题的一个例子吗?
希望一切都有意义
科林·G
dependency-injection - 使用 IOC 框架绑定到多个具体实现?
我对 DI/IOC 容器的概念相对熟悉,我曾在之前已经使用它们的项目上工作过。然而,对于这个新项目,没有现有的框架,我不得不选择一个。
长话短说,在某些场景中,我们将为给定接口配置多个实现。环顾网络,似乎使用任何主流框架来选择性地绑定到其中一个实现都非常简单。
然而,在某些情况下,我们需要运行所有配置的实现。我已经在这里搜索了所有 IOC 标记的帖子,我正在尝试翻阅主要框架的文档(到目前为止,查看 Unity、Ninject 和 Windsor),但是文档通常很少,我没有时间检查所有软件包的来源。
那么,是否有任何主流 IOC 容器允许我为我的一项服务绑定到所有已配置的具体类型?
java - 如何将属性值注入使用注释配置的 Spring Bean?
我有一堆 Spring bean,它们是通过注释从类路径中提取的,例如
在 Spring XML 文件中,定义了一个PropertyPlaceholderConfigurer:
我想将 app.properites 中的属性之一注入到上面显示的 bean 中。我不能简单地做类似的事情
因为 PersonDaoImpl 在 Spring XML 文件中没有特性(它是通过注释从类路径中提取的)。我有以下几点:
但我不清楚如何访问我感兴趣的属性ppc
?
dependency-injection - DI 和复合组件 - 设计
我正在为系统设计一个新组件,尝试遵循有关 DI 的各种准则,以便我们在隔离、模拟等方面获得回报。
所以我有以下组件(说明为抽象):
- Fetcher - 支持 IFetcher,它从特定数据源获取数据。返回 IDataSource。
- Builder - 支持 IBuilder,它从 IDataSource 构建结构。
我想将它们包装在一个“Performer”(因为想要一个更好的名字)组件中,它会执行以下操作:
为了遵守 Dependency Injection 和 LoD 指南(据我所知),我同时传入了 IFetcher 和 IBuilder 组件。
我的问题 - 这听起来像一个可以接受的设计吗?与工作同事的对话是“是的,听起来不错”,但不是 100% 相信 Performer 类的封装。
在我看来,Performer 是一个复合控件,它将几个不同的组件粘合在一起,这应该是可以接受的。唯一的问号是我是否应该有一个“Performer Factory”,但考虑到可以模拟实际组件(Ifetcher 和 IBuilder),这似乎有点过分了。
任何想法将不胜感激,谢谢。