inversion-of-control相关内容

IoC,你把容器放在哪里?

我正在将城堡温莎用于我正在处理的宠物项目.我开始注意到我需要在代码的不同位置调用 IoC 容器来创建新对象.这种对容器的依赖使我的代码更难维护. 我用了两种解决方案来解决这个问题 我尝试创建抽象工厂作为容器的包装器,我可以将其注入到需要创建对象的应用程序部分中.这有效但有一些缺点,因为城堡很难将自己的容器作为依赖项注入.所以我必须手动完成,这违背了 IoC 容器的全部目的. 我使 ..

Android 和依赖注入

我一直在寻找有关在 Android 开发中使用依赖项注入容器的一些信息,但徒劳无功.具体来说,如何覆盖 Activity 的创建,这种方式在从被杀死(无论出于何种原因)回来时也能正常工作. 有人有这方面的经验吗? 解决方案 看来你可以使用 Google Guice 2.0 与 Android.您还可以查看 roboguice. 编辑: Spring 现在也可用于 Andr ..
发布时间:2021-12-26 10:42:11 移动开发

有人可以解释一下 Microsoft Unity 吗?

我一直在阅读 MSDN 上关于 Unity(依赖注入、控制反转)的文章,但我想我需要用简单的术语(或简单的例子)来解释它.我熟悉 MVPC 模式(我们在这里使用它),但我还不能真正掌握 Unity 这个东西,我认为这是我们应用程序设计的下一步. 解决方案 Unity 只是一个 IoC“容器".谷歌 StructureMap 并尝试一下.我认为,当 IoC 的东西对你来说是新的时,更容易理解 ..

使用依赖注入进行内部操作的类库的最佳实践是什么?

在构建足够复杂以使用内部依赖注入的类库时,我应该注意什么? 假设它将使用 Castle Windsor(作为示例),考虑到该库将由简单的控制台应用程序(没有 DI)使用,Web 表单使用相同的容器 (Castle Windsor),以及使用不同容器 (NInject) 的网络应用? 解决方案 我会使用外观模式 此处:在库中,在执行容器初始化的公共类上公开一个公共方法(例如一个简单的 ..
发布时间:2021-12-26 10:41:01 C#/.NET

城堡温莎传递构造函数参数

我有一个带有一些属性的 IAddress 类.然后我有一个实现这个接口的具体类型.这个具体类型有几个我可以使用的不同构造函数.如何在运行时将参数值传递给这些构造函数之一?我不能使用配置文件,因为我将多次重用这个具体类型,每次参数值都会不同. IWindsorContainer container = new WindsorContainer(new XmlInterpreter());IAddr ..

依赖注入必须以牺牲封装为代价吗?

如果我理解正确,依赖注入的典型机制是通过类的构造函数或类的公共属性(成员)注入. 这暴露了被注入的依赖,违反了 OOP 封装原则. 我确定这种权衡是否正确?你如何处理这个问题? 另请参阅下面我对自己问题的回答. 解决方案 您可能会发现另一种看待这个问题的方式. 当我们使用 IoC/依赖项注入时,我们没有使用 OOP 概念.诚然,我们使用面向对象的语言作为“宿主",但 ..

IoC 容器,在编译时检查错误

我有一个简单的问题. 假设我有一个 .Net 解决方案,有不同的项目,比如一些类库(bll、dal 等)和一个可以是 web 应用程序或 wpf 应用程序的主项目,没关系. 现在假设我想使用 IoC 容器(如 Windsor、Ninject、Unity 等)来解析验证器、存储库、通用接口实现等内容. 我把它们放在一起.编译并运行良好.然后,有一天,我添加了一个新服务,在我的代码中 ..

MEF(托管可扩展性框架)与 IoC/DI

MEF(Managed Extensibility Framework)解决了哪些现有IoC/DI容器无法解决的问题? 解决方案 MEF 的主要目的是可扩展性;当应用程序的作者和插件(扩展)的作者不同并且除了发布的界面之外彼此没有特定的知识时,用作“插件"框架(合同) 库. MEF 解决的另一个问题空间与通常的 IoC 疑点不同,也是 MEF 的强项之一,是 [扩展] 发现.它有很多 ..
发布时间:2021-12-26 10:33:25 其他开发

如何在 ASP.NET MVC 2+ 中使用带有模型绑定器的 DI/IoC 容器?

假设我有一个 User 实体,我想在构造函数中将它的 CreationTime 属性设置为 DateTime.Now.但作为单元测试采用者,我不想直接访问 DateTime.Now,而是使用 ITimeProvider : 公共类用户{公共用户(ITimeProvider timeProvider){//...this.CreationTime = timeProvider.Now;}//... ..

IoC/依赖注入 - 请解释代码与 XML

我基本上了解 IoC 框架的工作原理,但是我不太明白的一件事是基于代码的配置应该如何工作.使用 XML,我了解如何向已部署的应用程序添加新程序集,然后更改 XML 中的配置以包含它.如果应用程序已经部署(即以某种形式编译),那么如何在不重新编译的情况下更改代码?还是人们就是这样做的,只需更改代码中的配置并重新编译? 解决方案 热插拔依赖项并不是使用 DI 容器的唯一目标. 依赖注入 ..
发布时间:2021-12-26 10:28:23 其他开发

我需要在 NodeJS 中进行依赖注入,或者如何处理...?

我目前正在使用 nodejs 创建一些实验项目.我已经使用 Spring 编写了很多 Java EE Web 应用程序,并且很欣赏那里的依赖注入的便利性. 现在我很好奇:如何使用节点进行依赖注入?或者:我什至需要它吗?有没有替代的概念,因为编程风格不同? 我说的是简单的事情,比如共享一个数据库连接对象,到目前为止,但我还没有找到一个让我满意的解决方案. 解决方案 简而言之,您不 ..
发布时间:2021-12-26 10:26:54 其他开发

ASP.NET MVC ContactsManager 教程中是否有解决依赖注入循环问题的好/正确方法?

如果你不知道我在说什么,要么通过 教程并尝试自己添加依赖注入,或者试试我对问题的解释. 注意:这个问题不在 ASP.NET 原始教程的范围内.本教程仅建议使用的模式对依赖注入友好. 问题基本上是 Controller、ModelStateWrapper 和 ContactManagerService 之间存在依赖循环. ContactController 构造函数采用 ICont ..

如何使用 IOC 从存储库中删除工作单元功能

我有一个使用 ASP.NET MVC、Unity 和 Linq to SQL 的应用程序. 统一容器注册类型 AcmeDataContext,它继承自 System.Data.Linq.DataContext,使用 HttpContext 使用 LifetimeManager. 有一个控制器工厂,它使用统一容器获取控制器实例.我在构造函数上设置了所有依赖项,如下所示: //初始化 E ..

如何在 ASP.NET Web 窗体中使用依赖注入

我正在尝试找出一种方法,将依赖注入与 ASP.NET Web 窗体控件结合使用. 我有很多控件可以直接创建存储库,并使用它们来访问和绑定数据等. 我正在寻找一种模式,我可以在其中将存储库从外部 (IoC) 传递给控件,​​因此我的控件仍然不知道存储库的构造方式以及它们的来源等. 我不希望我的控件依赖 IoC 容器,因此我只想能够使用构造函数或属性注入来构造控件. (更复杂的 ..

通过构造函数或属性设置器进行依赖注入?

我正在重构一个类并向它添加一个新的依赖项.该类目前正在构造函数中获取其现有的依赖项.所以为了一致性,我将参数添加到构造函数中. 当然,还有一些子类以及用于单元测试的更多子类,所以现在我正在玩游戏,改变所有构造函数以匹配,这需要很长时间. 这让我认为将属性与 setter 一起使用是获取依赖项的更好方法.我认为注入的依赖项不应该是构造类实例的接口的一部分.您添加了一个依赖项,现在您的所有用户(子 ..
发布时间:2021-12-26 10:23:47 其他开发

依赖注入 Unity - 条件解析

条件解析是我目前不明白的最后一件事. 假设我们有一个接口IAuthenticate: 公共接口 IAuthenticate{布尔登录(字符串用户,字符串传递);} 现在我有两种类型的身份验证. Twitter 身份验证 公共类 TwitterAuth : IAuthenticate{bool 登录(字符串用户,字符串传递){//连接到推特api}} Facebook 身份验证 ..

控制反转依赖注入

我感觉没有控制反转这样的东西,或者更确切地说,正确的术语是依赖注入.我这样假设有错吗? 为了我自己,我一直在尝试定义 IoC.在这样做的过程中,我学到了很多关于 IoC 容器和依赖注入的知识. 刚才,我从 Martin Fowler 的网站上读到了这个: 因此,我认为我们需要更多此模式的特定名称.控制反转太笼统了术语,因此人们发现它令人困惑.结果有很多与各种国际奥委会倡导者的讨论 ..