问题标签 [inversion-of-control]

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.

0 投票
5 回答
4436 浏览

c# - IoC 容器是否取代了工厂的使用

我刚刚开始使用 IoC 容器,如果这是一个愚蠢的问题,我深表歉意。

我在应用程序中有如下代码

它基本上是一个简单的工厂,它返回处理输入数据的正确策略。

IoC 容器会允许我消除这样的代码吗?也就是说:它是否允许我根据输入参数的类型动态选择要加载的具体实现?

还是我在这里偏离了方向?

0 投票
2 回答
4415 浏览

.net - Windows 窗体中的 MVP 和 IOC?

我已经开始在我的几个表单的 Windows 表单应用程序中使用 MVP 模式。这些表单创建一个演示者并将它们自己传回给演示者。

我没有使用任何特定的框架,表单仍然可以打开其他表单。

我是否应该更改此设置以便演示者可以打开其他表单(通过视图)?我相信必须使用 IOC 框架来做到这一点?

这可能会节省我在 UI 中打开相关表单的逻辑,并允许我从表单中删除对演示者的引用。

0 投票
8 回答
15625 浏览

wpf - WPF 应用程序是否可以进行依赖注入?

我想开始在我的 WPF 应用程序中使用依赖注入,主要是为了更好的单元可测试性。我的应用程序主要是按照 MV-VM 模式构建的。我正在为我的 IoC 容器寻找Autofac,但我认为这对这个讨论没有太大影响。

将服务注入启动窗口似乎很简单,因为我可以在 App.xaml.cs 中创建容器并从中解析。

我正在苦苦挣扎的是如何将 DI ViewModels 和服务转换为用户控件?用户控件是通过 XAML 标记实例化的,因此它们没有机会Resolve()

我能想到的最好的办法是将容器放在单例中,并让用户控件从全局容器中解析他们的 ViewModel。充其量,这感觉像是一个半途而废的解决方案,因为它仍然需要我的组件依赖于 ServiceLocator。

使用 WPF 可以实现完整的 IoC 吗?

[编辑] - 有人建议使用 Prism,但即使评估 Prism 似乎也是一项巨大的投资。我希望有更小的东西。

[编辑] 这是我停止的代码片段

0 投票
2 回答
2828 浏览

c# - 什么是控制反转/面向方面意义上的 .NET 代理对象?

什么是控制反转/面向方面意义上的代理对象?

关于代理对象是什么的任何好文章?
为什么要使用一个?
以及如何用 C# 编写一个?

0 投票
4 回答
6838 浏览

c# - 控制台应用程序的 IOC?

谁能想到将 IOC 放入控制台应用程序的好解决方案?

目前我们只是使用具有以下方法的静态类:

我希望体验是无缝的,但想不出从控制台应用程序实现这一点的方法。

0 投票
3 回答
14726 浏览

c# - 如何使用 StructureMap 通过代码定义默认构造函数?

我不知道如何通过代码为 StructureMap(2.5 版)中的类型定义默认构造函数(当它存在重载时)。

我想获得一个服务实例,并且容器必须向其中注入一个 Linq2Sql 数据上下文实例。

我在我的“引导程序”方法中写了这个:

当我运行我的应用程序时,我收到了这个错误:

StructureMap 异常代码:202
没有为 PluginFamily MyNamespace.Data.SqlRepository.MyDataContext、MyNamespace.Data、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null 定义默认实例

如果我注释掉所有不需要的 Linq2Sql 生成的构造函数,它就可以正常工作。

更新:哦,我忘了说我不会使用该[StructureMap.DefaultConstructor]属性。

0 投票
5 回答
11950 浏览

asp.net - 如何将 Castle Windsor 与 ASP.Net Web 表单一起使用?

我正在尝试将 Windsor 的依赖注入连接到标准的 asp.net 网络表单。我想我已经使用 HttpModule 和 CustomAttribute(代码如下所示)实现了这一点,尽管该解决方案似乎有点笨拙,并且想知道 Windsor 是否有更好的现成支持解决方案?

这里有几个文件一起显示

0 投票
1 回答
383 浏览

inversion-of-control - IoC,在构造函数中将注入与参数混合?

我是控制反转(IoC) 的新手,所以我想知道处理我想要传递数据结构/参数以及将对象注入类的情况的最佳策略。

一个简单的例子:

这里最好的策略是什么?估计不能直接注入吧?

我想我需要将所有字符串参数作为设置器而不是Ilogger在构造函数中,或者相反?

还是我错了?

Ps 我知道上面的例子很糟糕,toEmail应该body在一个单独的方法调用中传递,但这只是为了做一个例子。

0 投票
6 回答
543 浏览

c# - 国际奥委会设计资源

我已经对此进行了很多搜索,并且没有太多运气找到有凝聚力的东西。我是一个相对较新的开发人员,刚刚开始我的第一个专业开发职位。我知道即使在基础领域我也有很多东西要学。基于收听 PodCast、阅读博客、论文等;我开始明白,在设计和构建软件时考虑分离关注点、IOC、依赖注入似乎是正确的做法。我在非常高的水平上获得了这些概念,并希望尽可能多地接近我对此所做的事情。

所以,这就是问题所在。我怎么会这样设计东西?我在一个团队工作,该团队继承了一个基于 Web 的产品,该产品耦合非常紧密,文档记录非常差,而且通常不容易维护一些软件。Evryone 似乎喜欢移除这对夫妇中的一些人的想法。他们喜欢开发自动化测试的想法(根据我所读到的内容,使用松散耦合的组件更容易做到这一点)。似乎没有人知道该怎么做。我愿意尝试一下,但我需要指导。我发现的一切似乎总是以一种非常高级的方式谈论这些东西,或者相反,只关注整体的一小部分。我想要一些关于一本书、一系列教程、视频或一些东西的指导,这些东西需要一个真实的例子,向你展示如何应用这些原则。理想情况下,

我知道这有点啰嗦,我只是有点沮丧,因为我发现的大多数综合培训材料根本没有以一种开始的人可以从一天开始应用良好实践的方式讨论这个话题一。

谢谢大家的时间。

史蒂夫

0 投票
3 回答
871 浏览

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 容器进行依赖注入?

从这个问题来看,被解析的类/类型似乎是在解析时实例化的,而不是在其注册时...