Questions tagged «ioc-container»

在面向对象的语言中,控制容器(ioc容器)的反转可用于在应用程序中配置和管理对象。

30
为什么我需要一个IoC容器而不是简单的DI代码?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我使用依赖注入(DI)已有一段时间了,注入了构造函数,属性或方法。我从来没有觉得需要使用控制反转(IoC)容器。但是,我阅读的内容越多,社区使用IoC容器的压力就越大。 我玩过.NET容器,如StructureMap,NInject,Unity和Funq。我仍然看不到IoC容器如何使我的代码受益/改进。 我也害怕在工作中开始使用容器,因为许多同事会看到他们不理解的代码。他们中的许多人可能不愿意学习新技术。 请说服我,我需要使用IoC容器。与工作中的其他开发人员交谈时,我将使用这些参数。

11
Spring的自动布线如何工作?
我对control(IoC)的反转如何在Spring。 说我有一个称为服务的类UserServiceImpl,它实现了UserService接口。 怎么会这样@Autowired? 而在我Controllers,我怎么会instantiate在instance这个服务的? 我会做以下事情吗? UserService userService = new UserServiceImpl();

7
主要的C#DI / IoC框架如何比较?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 改善这个问题 冒着进入神圣战争领土的风险,这些流行的DI / IoC框架的优点和缺点是什么,可以轻易地认为是最好的吗?..: Ninject 统一 温莎城堡 Autofac 结构图 我这里没有列出其他的C#DI / IoC框架吗? 就我的用例而言,我正在构建客户端WPF应用程序和WCF / SQL服务基础结构,易用性(尤其是在语法简洁明了方面),一致的文档,良好的社区支持和性能都是重要因素。由我选择。 更新: 引用的资源和重复的问题似乎已经过时了,知道所有这些框架的人能挺身而出并提供一些真正的见解吗? 我意识到,关于该主题的大多数意见可能会带有偏见,但我希望有人花时间研究所有这些框架,并且至少要有一个客观的比较。 如果以前没有做过,我很愿意进行自己的调查,但是我认为这至少是一些人已经做过的。 第二次更新: 如果您确实有多个DI / IoC容器的使用经验,请对这些容器的优缺点进行排名和总结,谢谢。这不是发现人们制作的所有晦涩的小容器的一种练习,我正在寻找流行的(和活动的)框架之间的比较。

9
如何避免依赖注入构造函数的疯狂?
我发现我的构造函数开始看起来像这样: public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... ) 不断增加的参数列表。由于“容器”是我的依赖项注入容器,所以为什么我不能这样做: public MyClass(Container con) 每堂课?不利之处是什么?如果执行此操作,则感觉就像我在使用精美的静态方法。请分享您对IoC和依赖注入疯狂的想法。

5
是否存在用于初始化通过DI容器创建的对象的模式
我试图让Unity来管理对象的创建,并且我想拥有一些直到运行时才知道的初始化参数: 目前,我唯一想到的方法是在接口上使用Init方法。 interface IMyIntf { void Initialize(string runTimeParam); string RunTimeParam { get; } } 然后要使用它(在Unity中),我会这样做: var IMyIntf = unityContainer.Resolve<IMyIntf>(); IMyIntf.Initialize("somevalue"); 在这种情况下,runTimeParam将在运行时根据用户输入确定参数。此处的普通情况只是返回的值,runTimeParam但实际上,参数将类似于文件名,而initialize方法将对文件进行处理。 这会产生许多问题,即该Initialize方法在界面上可用并且可以多次调用。在实现中设置标志并在重复调用时引发异常Initialize似乎很麻烦。 在我解析界面的那一刻,我不想了解任何有关的实现IMyIntf。不过,我真正想要的是该接口需要某些一次性初始化参数的知识。有没有一种方法可以用此信息注释(属性?)接口,并在创建对象时将其传递给框架? 编辑:描述了更多界面。

4
.NET Core DI,将参数传递给构造函数的方法
具有以下服务构造函数 public class Service : IService { public Service(IOtherService service1, IAnotherOne service2, string arg) { } } 使用.NET Core IOC机制传递参数的选择有哪些 _serviceCollection.AddSingleton<IOtherService , OtherService>(); _serviceCollection.AddSingleton<IAnotherOne , AnotherOne>(); _serviceCollection.AddSingleton<IService>(x=>new Service( _serviceCollection.BuildServiceProvider().GetService<IOtherService>(), _serviceCollection.BuildServiceProvider().GetService<IAnotherOne >(), "" )); 还有其他办法吗?


2
为什么不使用IoC容器来解析实体/业务对象的依赖关系?
我了解DI背后的概念,但我只是在学习不同的IoC容器可以做什么。似乎大多数人主张使用IoC容器来连接无状态服务,但是将它们用于诸如实体之类的有状态对象又如何呢? 无论是对还是错,我通常都会用行为来填充我的实体,即使该行为需要外部类。例: public class Order : IOrder { private string _ShipAddress; private IShipQuoter _ShipQuoter; public Order(IOrderData OrderData, IShipQuoter ShipQuoter) { // OrderData comes from a repository and has the data needed // to construct order _ShipAddress = OrderData.ShipAddress; // etc. _ShipQuoter = ShipQuoter; } private decimal GetShippingRate() { return _ShipQuoter.GetRate(this); …

4
“控制反转”,“依赖反转”和“解耦”之间的区别
我正在阅读有关依赖倒置和解耦的理论,但看不到两者之间的区别。 依赖倒置讨论了将功能组件去耦的问题,以便更高级别的组件不依赖于更低级别的组件。 去耦讨论了同一件事以及如何实现。但是随后我们有了IoC容器,使事情变得更加混乱。为什么它们不叫Dependency Inversion Containers或更好的Dependency Injection Containers,因为它们为独立组件的运行时耦合提供服务? 然后我们有控制反转。这和依赖倒置基本上是一样的,不是吗?为什么有三个描述同一事物的术语?还是我瞎了? 两者之间有什么区别? IoC在IoC容器中必须做什么?

3
Laravel:差异App :: bind和App :: singleton
对于laravel在IOC容器和外墙方面提供的所有美好功能,我感到有些困惑。由于我不是一个经验丰富的程序员,因此学习变得不知所措。 我想知道这两个示例之间有什么区别: “ Foo”的外观,并通过 App::bind() “ Foo”的外观,并通过 App::singleton() 以我的最佳理解,Foo::method()将$app->make['foo']->method()在第一个示例中重写Foo该类的多个实例,在第二个示例中,由于它是通过绑定的App::singleton(),因此Foo每次调用该对象上的Method时,都将返回的同一实例。 很抱歉,这个问题的答案很明显,但是我找不到关于此事的任何确认,也没有明确的解释。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.