inversion-of-control相关内容
我正在将城堡温莎用于我正在处理的宠物项目.我开始注意到我需要在代码的不同位置调用 IoC 容器来创建新对象.这种对容器的依赖使我的代码更难维护. 我用了两种解决方案来解决这个问题 我尝试创建抽象工厂作为容器的包装器,我可以将其注入到需要创建对象的应用程序部分中.这有效但有一些缺点,因为城堡很难将自己的容器作为依赖项注入.所以我必须手动完成,这违背了 IoC 容器的全部目的. 我使
..
我一直在寻找有关在 Android 开发中使用依赖项注入容器的一些信息,但徒劳无功.具体来说,如何覆盖 Activity 的创建,这种方式在从被杀死(无论出于何种原因)回来时也能正常工作. 有人有这方面的经验吗? 解决方案 看来你可以使用 Google Guice 2.0 与 Android.您还可以查看 roboguice. 编辑: Spring 现在也可用于 Andr
..
我一直在阅读 MSDN 上关于 Unity(依赖注入、控制反转)的文章,但我想我需要用简单的术语(或简单的例子)来解释它.我熟悉 MVPC 模式(我们在这里使用它),但我还不能真正掌握 Unity 这个东西,我认为这是我们应用程序设计的下一步. 解决方案 Unity 只是一个 IoC“容器".谷歌 StructureMap 并尝试一下.我认为,当 IoC 的东西对你来说是新的时,更容易理解
..
在构建足够复杂以使用内部依赖注入的类库时,我应该注意什么? 假设它将使用 Castle Windsor(作为示例),考虑到该库将由简单的控制台应用程序(没有 DI)使用,Web 表单使用相同的容器 (Castle Windsor),以及使用不同容器 (NInject) 的网络应用? 解决方案 我会使用外观模式 此处:在库中,在执行容器初始化的公共类上公开一个公共方法(例如一个简单的
..
我有一个带有一些属性的 IAddress 类.然后我有一个实现这个接口的具体类型.这个具体类型有几个我可以使用的不同构造函数.如何在运行时将参数值传递给这些构造函数之一?我不能使用配置文件,因为我将多次重用这个具体类型,每次参数值都会不同. IWindsorContainer container = new WindsorContainer(new XmlInterpreter());IAddr
..
如果我理解正确,依赖注入的典型机制是通过类的构造函数或类的公共属性(成员)注入. 这暴露了被注入的依赖,违反了 OOP 封装原则. 我确定这种权衡是否正确?你如何处理这个问题? 另请参阅下面我对自己问题的回答. 解决方案 您可能会发现另一种看待这个问题的方式. 当我们使用 IoC/依赖项注入时,我们没有使用 OOP 概念.诚然,我们使用面向对象的语言作为“宿主",但
..
我有一个简单的问题. 假设我有一个 .Net 解决方案,有不同的项目,比如一些类库(bll、dal 等)和一个可以是 web 应用程序或 wpf 应用程序的主项目,没关系. 现在假设我想使用 IoC 容器(如 Windsor、Ninject、Unity 等)来解析验证器、存储库、通用接口实现等内容. 我把它们放在一起.编译并运行良好.然后,有一天,我添加了一个新服务,在我的代码中
..
我有以下(简化的)情况:我有两个接口 interface IAmAnInterface{void DoSomething();} 和 interface IAmAnInterfaceToo{void DoSomethingElse();} 和一个实现两者的类: class IAmAnImplementation: IAmAnInterface, IAmAnInterfaceToo{公共
..
MEF(Managed Extensibility Framework)解决了哪些现有IoC/DI容器无法解决的问题? 解决方案 MEF 的主要目的是可扩展性;当应用程序的作者和插件(扩展)的作者不同并且除了发布的界面之外彼此没有特定的知识时,用作“插件"框架(合同) 库. MEF 解决的另一个问题空间与通常的 IoC 疑点不同,也是 MEF 的强项之一,是 [扩展] 发现.它有很多
..
假设我有一个 User 实体,我想在构造函数中将它的 CreationTime 属性设置为 DateTime.Now.但作为单元测试采用者,我不想直接访问 DateTime.Now,而是使用 ITimeProvider : 公共类用户{公共用户(ITimeProvider timeProvider){//...this.CreationTime = timeProvider.Now;}//...
..
我正在考虑在我们的用户界面中使用 Microsoft Unity 作为我的依赖注入工具. 我们的中间层已经在使用 Castle Windsor,但我想我应该坚持使用 Microsoft. 有人对最好的依赖注入工具有什么想法吗? Autofac Castle MicroKernel/Windsor PicoContainer.NET Puzzle.NFactory Spri
..
我基本上了解 IoC 框架的工作原理,但是我不太明白的一件事是基于代码的配置应该如何工作.使用 XML,我了解如何向已部署的应用程序添加新程序集,然后更改 XML 中的配置以包含它.如果应用程序已经部署(即以某种形式编译),那么如何在不重新编译的情况下更改代码?还是人们就是这样做的,只需更改代码中的配置并重新编译? 解决方案 热插拔依赖项并不是使用 DI 容器的唯一目标. 依赖注入
..
我有一些看起来像这样的代码: public MyService(IDependency 依赖){_dependency = 依赖;}公共消息方法1(){_dependency.DoSomething();}公共消息方法2(){_dependency.DoSomething();}公共消息方法2(){_dependency.DoSomething();} 现在我才意识到,因为依赖对象包含内部状态
..
我目前正在使用 nodejs 创建一些实验项目.我已经使用 Spring 编写了很多 Java EE Web 应用程序,并且很欣赏那里的依赖注入的便利性. 现在我很好奇:如何使用节点进行依赖注入?或者:我什至需要它吗?有没有替代的概念,因为编程风格不同? 我说的是简单的事情,比如共享一个数据库连接对象,到目前为止,但我还没有找到一个让我满意的解决方案. 解决方案 简而言之,您不
..
如果你不知道我在说什么,要么通过 教程并尝试自己添加依赖注入,或者试试我对问题的解释. 注意:这个问题不在 ASP.NET 原始教程的范围内.本教程仅建议使用的模式对依赖注入友好. 问题基本上是 Controller、ModelStateWrapper 和 ContactManagerService 之间存在依赖循环. ContactController 构造函数采用 ICont
..
我有一个使用 ASP.NET MVC、Unity 和 Linq to SQL 的应用程序. 统一容器注册类型 AcmeDataContext,它继承自 System.Data.Linq.DataContext,使用 HttpContext 使用 LifetimeManager. 有一个控制器工厂,它使用统一容器获取控制器实例.我在构造函数上设置了所有依赖项,如下所示: //初始化 E
..
我正在尝试找出一种方法,将依赖注入与 ASP.NET Web 窗体控件结合使用. 我有很多控件可以直接创建存储库,并使用它们来访问和绑定数据等. 我正在寻找一种模式,我可以在其中将存储库从外部 (IoC) 传递给控件,因此我的控件仍然不知道存储库的构造方式以及它们的来源等. 我不希望我的控件依赖 IoC 容器,因此我只想能够使用构造函数或属性注入来构造控件. (更复杂的
..
我正在重构一个类并向它添加一个新的依赖项.该类目前正在构造函数中获取其现有的依赖项.所以为了一致性,我将参数添加到构造函数中. 当然,还有一些子类以及用于单元测试的更多子类,所以现在我正在玩游戏,改变所有构造函数以匹配,这需要很长时间. 这让我认为将属性与 setter 一起使用是获取依赖项的更好方法.我认为注入的依赖项不应该是构造类实例的接口的一部分.您添加了一个依赖项,现在您的所有用户(子
..
条件解析是我目前不明白的最后一件事. 假设我们有一个接口IAuthenticate: 公共接口 IAuthenticate{布尔登录(字符串用户,字符串传递);} 现在我有两种类型的身份验证. Twitter 身份验证 公共类 TwitterAuth : IAuthenticate{bool 登录(字符串用户,字符串传递){//连接到推特api}} Facebook 身份验证
..
我感觉没有控制反转这样的东西,或者更确切地说,正确的术语是依赖注入.我这样假设有错吗? 为了我自己,我一直在尝试定义 IoC.在这样做的过程中,我学到了很多关于 IoC 容器和依赖注入的知识. 刚才,我从 Martin Fowler 的网站上读到了这个: 因此,我认为我们需要更多此模式的特定名称.控制反转太笼统了术语,因此人们发现它令人困惑.结果有很多与各种国际奥委会倡导者的讨论
..