598得票30回答
为什么我需要使用IoC容器而不是直接使用DI代码?

我已经使用依赖注入(DI)一段时间了,在构造函数、属性或方法中进行注入。我从未感到需要使用控制反转(IoC)容器。然而,我阅读的越多,就越感到社区对我使用IoC容器的压力。 我尝试过像StructureMap、NInject、Unity和Funq这样的.NET容器。但我仍然看不出IoC容器如...

586得票11回答
Spring中的自动装配是如何工作的?

我有点困惑 控制反转(IoC)如何在Spring中工作。 假设我有一个名为UserServiceImpl的服务类,它实现了UserService接口。这应该如何进行 @Autowired? 而在我的Controllers中,我应该如何实例化此服务的instance? 我只需要执行以下操作...

358得票10回答
如何避免依赖注入构造函数的混乱?

我发现我的构造函数越来越长了:public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... ) 由于参数列表不断增加。因为“Container”是我的依赖注入容器,我为什么不能这样做:public MyClass(Con...

319得票7回答
主要的C# DI/IoC框架有哪些,它们之间有什么区别?

冒着涉足圣战领域的风险,这些热门DI/IoC框架的优缺点是什么?是否可以轻易地被认为是最好的?..: Ninject Unity Castle.Windsor Autofac StructureMap 还有其他未在此处列出的用于C#的DI/IoC框架吗? 在我的使用情况下,我正在构建一个客...

264得票4回答
.NET Core DI,构造函数参数传递的方式

具有以下服务构造函数public class Service : IService { public Service(IOtherService service1, IAnotherOne service2, string arg) { } } 使用.NE...

153得票5回答
通过 DI 容器创建的对象初始化是否有模式?

我正在尝试让Unity管理我的对象创建,并且我想有一些初始化参数,这些参数在运行时是未知的: 目前,我能想到的唯一方法是在接口上拥有一个Init方法。interface IMyIntf { void Initialize(string runTimeParam); string Ru...

97得票2回答
构建容器后添加服务

在 ContainerBuilder 构建完成并创建了 Container (ContainerBuilder 已处理)之后,是否可能在运行时注册服务?

97得票4回答
控制反转(IoC),依赖反转(DI)和解耦的区别

我正在阅读关于依赖反转和解耦的理论,但我看不出两者之间的区别。 依赖反转讲述了如何解耦功能组件,使得高层次的组件不依赖于低层次的组件。 解耦也在讲同样的事情以及如何实现它。但是,我们有 IoC容器 进一步混淆了问题。为什么它们不被称为 依赖反转容器 ,甚至更好的是 依赖注入容器 ,因为它们...

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

我理解DI的概念,但我正在学习不同IoC容器可以做什么。似乎大多数人都建议使用IoC容器来连接无状态服务,但是对于像实体这样的有状态对象,是否也可以使用它们呢? 无论对错,通常我会将行为塞进我的实体中,即使该行为需要一个外部类。例如:public class Order : IOrder {...

79得票3回答
Laravel:App::bind和App::singleton的区别

我对 Laravel 提供的 IOC 容器和 Facades 所提供的优点感到有些困惑。由于我不是经验丰富的程序员,学习起来也很难以承受。 我想知道这两个示例之间的区别: 1. 通过 `App::bind()` 注册到容器中的'Foo'的外观 2. 通过 `App::singleton()...