inversion-of-control相关内容

控制反转与依赖注入

根据 Martin Fowler 撰写的论文,控制反转是控制的原理程序流是颠倒的:不是程序员控制程序流,而是外部源(框架、服务、其他组件)控制它.就像我们将某些东西插入其他东西一样.他提到了一个关于 EJB 2.0 的例子: 例如Session Bean接口定义 ejbRemove、ejbPassivate(存储到二级存储),和ejbActivate(从被动恢复状态).你无法控制何时这些方法 ..
发布时间:2021-12-26 10:23:17 其他开发

带有 DI 和 IoC 的工厂方法

我熟悉这些模式,但仍然不知道如何处理以下情况: 公共类 CarFactory{公共汽车工厂(Dep1,Dep2,Dep3,Dep4,Dep5,Dep6){}公共 ICar CreateCar(类型){开关(类型){案例一:返回新的 Car1(Dep1,Dep2,Dep3);休息;案例B:返回新的 Car2(Dep4,Dep5,Dep6);休息;}}} 总的来说,问题在于需要注入的引用数量.车多 ..

什么是依赖注入上下文中的组合根?

我正在探索依赖注入,并且到处都在使用术语组合根.那是什么? 解决方案 组合根是应用程序中使用依赖注入容器(尽管这是done 无关紧要,可以使用容器,也可以使用 pure DI 手动完成). 应该只有一个地方会发生这种情况,并且您的容器不需要在组合根目录之外使用. 引用以下链接之一的答案: 在实践中,这意味着您应该在应用程序的根目录. 在桌面应用程序中,这将在 Mai ..
发布时间:2021-12-26 10:21:57 其他开发

为什么我需要一个 IoC 容器而不是简单的 DI 代码?

我一直在使用 依赖注入 (DI) 一段时间,在构造函数、属性或方法.我从未觉得需要使用 控制反转 (IoC) 容器.然而,我读得越多,我就越感到来自社区的使用 IoC 容器的压力. 我使用过 .NET 容器,例如 StructureMap、NInject、Unity 和 Funq.我仍然看不到 IoC 容器将如何使我的代码受益/改进. 我也害怕在工作中开始使用容器,因为我的许多同事会看 ..

为什么不使用 IoC 容器来解决实体/业务对象的依赖关系?

我了解 DI 背后的概念,但我只是在学习不同的 IoC 容器可以做什么.似乎大多数人都提倡使用 IoC 容器来连接无状态服务,但是将它们用于像实体这样的有状态对象呢? 无论是对还是错,我通常用行为填充我的实体,即使该行为需要外部类.示例: 公共类订单:IOrder{私人字符串_ShipAddress;私人 IShipQuoter _ShipQuoter;公共订单(IOrderData Or ..

是否有用于初始化通过 DI 容器创建的对象的模式

我正在尝试让 Unity 管理我的对象的创建,并且我想要一些直到运行时才知道的初始化参数: 目前我能想到的唯一方法是在接口上有一个 Init 方法. interface IMyIntf {无效初始化(字符串运行时间参数);字符串运行时间参数 { 获取;}} 然后(在 Unity 中)使用它,我会这样做: var IMyIntf = unityContainer.Resolve();IM ..

Ioc/DI - 为什么我必须引用应用程序入口点中的所有层/程序集?

(与此问题相关,EF4: 为什么开启延迟加载后还要开启代理创建?). 我是 DI 的新手,请耐心等待.我知道容器负责实例化我所有注册的类型,但为了做到这一点,它需要引用我的解决方案中的所有 DLL 及其引用. 如果我不使用 DI 容器,我就不必在我的 MVC3 应用程序中引用 EntityFramework 库,只需要引用我的业务层,它会引用我的 DAL/Repo 层. 我知道在 ..

Spring IoC 和通用接口类型

我正在尝试将 Spring IoC 与这样的接口一起使用: 公共接口 ISimpleService{void someOp(T t);T otherOp();} Spring 能否提供基于泛型类型参数 T 的 IoC?我的意思是,像这样: 公共类 SpringIocTest {@自动连线ISimpleService长Svc;@自动连线ISimpleServicestrSvc;//...} ..
发布时间:2021-12-25 13:24:35 Java开发

懒惰的依赖注入

我有一个项目,其中 Ninject 用作​​ IoC 容器.我担心的是很多类都有这样的构造函数: [注入]公共家庭控制器(UserManager userManager, RoleManager roleManager, BlahblahManager blahblahManager) {_userManager = 用户管理器;_roleManager = 角色管理器;_blahblahMan ..
发布时间:2021-12-22 09:11:30 C#/.NET

如何向一个 5 岁的孩子解释依赖注入?

什么是解释依赖注入的好方法? 我在 Google 上找到了几个教程,但没有一个会假设读者只是 Java 初学者.你会如何向新手解释这一点? 解决方案 我给你五岁孩子的依赖注入. 当您自己从冰箱中取出东西时,可能会引起问题.你可能把门开着,你可能会得到一些妈妈或爸爸不希望你拥有的东西.您甚至可能正在寻找我们甚至没有或已过期的东西. 你应该做的是陈述一个需求,“我午餐需要喝点 ..

Prism.Forms 哪个 IoC 容器更好

我正在开始一个新的 Prism.Forms 项目,我想知道各种 IoC containers (Autofac、Dryloc、Ninject 或 Unity) 最好继续使用. 我不知道这是否属实,但我在某处读到 Unity 不再处于积极开发状态,因为这和 MEF 是唯一的 IoC 容器我用过我不确定它是否适合. 与此同时,我对 Autofac、Dryloc 或 Ninject 知之甚少 ..

构造函数中的泛型类型

我有一个通用类型接口并且想要一个对象的构造函数来接收通用接口. 喜欢: public Constructor(int blah, IGenericType instance){} 我希望创建此对象的代码指定 IGenericType(使用控制反转).我还没有看到发生这种情况的方法.有什么建议可以实现这一点吗? 我希望有人像这样创建对象: Constructor varname = n ..
发布时间:2021-12-15 09:50:10 C#/.NET

关于spring框架中的多个容器

在典型的 Spring MVC 项目中,有两个“容器":一个由 ContextLoaderListener 创建,另一个由 DispatchServlet 创建. 我想知道,这真的是两个IoC容器实例吗?(我看到两个bean配置文件,一个是root-context.xml另一个是servlet-context.xml) 如果有2个容器,那是什么关系? 在一个容器中声明的 bean ..

了解 IoC 容器和依赖注入

我的理解: 依赖是指 ClassA 的实例需要 ClassB 的实例来实例化 ClassA 的新实例. 依赖注入是通过 ClassA 的构造函数中的参数或通过 set~DependencyNameHere~(~DependencyNameHere~ $param) 函数向 ClassA 传递 ClassB 的实例.(这是我不能完全确定的领域之一). IoC 容器是一个单例类(在任何给定时 ..
发布时间:2021-12-12 08:09:23 PHP

使用 IoC 进行单元测试

如何使用 IoC 容器进行单元测试?使用 IoC 在大型解决方案(50 多个项目)中管理模拟有用吗?有什么经验吗?有哪些 C# 库可以很好地在单元测试中使用它? 解决方案 一般来说,DI Container 不应该是单元测试所必需的,因为单元测试就是为了分离职责. 考虑一个使用构造函数注入的类 public MyClass(IMyDependency dep) { } 在您的整个 ..
发布时间:2021-12-09 18:29:52 C#/.NET

使用带有工作单元的简单注射器Windows 窗体中的存储库模式

我正在尝试在我的 Windows 窗体应用程序中实现 IoC.我的选择落在了 Simple Injector 上,因为它又快又轻.我还在我的应用程序中实现了工作单元和存储库模式.这是结构: 数据库上下文: 公共类 MemberContext : DbContext{公共成员上下文(): base("名称=成员上下文"){ }公共数据库集成员{得到;放;}protected override ..