Tag: dependency injection

为什么MVC4使用服务定位器反模式?

在阅读Mark Seemann的“Dependency Injection in .NET”之后 ,我远离了服务定位器 ,这是一种反模式。 在阅读MVC 4上的发行说明之后,我看到: 通过DependencyResolver改进控制反转(IoC):Web API现在使用由MVC的依赖parsing器实现的服务定位器模式来获取许多不同工具的实例。 因此,我留下了好奇和困惑,为什么微软会在2012年使用服务定位器。

AngularJS中的可选依赖项

我正在尝试在AngularJS中实现一个跨多个页面使用的控制器。 它利用一些服务。 其中一些在所有页面上加载,一些则不在。 我的意思是它是在不同的文件中定义的,并且这些文件是独立加载的。 但是,如果我不加载所有页面上的这些服务,我得到的错误: Error: Unknown provider: firstOtionalServiceProvider <- firstOtionalService 所以,我需要在所有页面上加载脚本。 我可以在Angular中声明依赖项作为可选项吗? 例如: myApp.controller('MyController', ['$scope', 'firstRequiredService', 'secondRequiredService', 'optional:firstOptionalService', 'optional:secondOptionalService', function($scope, firstRequiredService, secondRequiredService, firstOptionalService, secondOptionalSerivce){ // No need to check, as firstRequiredService must not be null firstRequiredService.alwaysDefined(); // If the dependency is not resolved i want Angular to set null as argument and check if […]

如何将@request注入到服务中?

当我尝试将@request注入到我的任何服务中时,出现以下exception: ScopeWideningInjectionException:范围扩展注入检测:定义“service.navigation”引用属于较窄范围的服务“请求”。 通常,将“service.navigation”移动到范围“request”或者通过注入容器本身来依赖提供者模式并且在每次需要时请求服务“请求”是更安全的。 在罕见的特殊情况下,可能不需要,那么你可以将参考设置为strict = false来摆脱这个错误。 什么是最好的方式进行? 我应该尝试设置这strict=false和如何,或者我应该不注入请求服务,而是通过我的控制器每次我调用我需要的函数传递给服务? 其他的可能性是注入内核并从中取出,但是在我的服务中,我只使用@router和@request,因此注入整个内核将是不合理的。 谢谢!

NInject:你在哪里保持你对内核的引用?

我在一个新的Web应用程序上使用NInject,有两件事情我不清楚: 我不需要保持对内核的引用(Session / Appvariables),以确保GC不会收集所有的实例吗? 例如,如果我指定。使用()然后收集内核对象,并不是我所有的“单身”收集? 如果我确实需要保持对内核对象的引用,那么如何让传递给WithArguments()的参数改变或者是不可能的。

MEF和Unity有什么不同?

我刚开始学习DI(我正在WPF / Silverlight上工作,但是我有一个转移到ASP.NET的计划)。 在我从互联网上读到一些DI文章后,我有两个框架,MEF和Unity。 我想知道他们之间的真实世界有什么不同,哪一个是好的。

什么是Ninject,什么时候使用它?

我一直在帮助一些项目的朋友,还有一个使用Ninject的课程。 我对C#相当陌生,我不知道这个类正在做什么,这就是为什么我需要理解Ninject。 任何人都可以解释Ninject是什么以及什么时候使用它(如果可能,举例)? 或者,如果你可以指出一些很好的链接。 我试过这个问题: Ninject教程/文档? 但对于像我这样的初学者并没有什么帮助。

比较Castle Windsor,Unity和StructureMap

在跟随Krzysztof的声明 , 温莎做了比其他IoC更多,我想了解这些IoC的相互堆叠和城堡温莎提供的好处/额外设施。 有比较吗? 有人可以帮助我了解Castle Windsor提供的其他IoCfunction吗?

unit testing文件I / O

通过堆栈溢出的现有unit testing相关的线程,我找不到一个关于如何unit testing文件I / O操作的明确答案。 我最近才开始研究unit testing,之前已经意识到了优点,但是很难习惯于先写testing。 我已经build立了我的项目来使用NUnit和Rhino Mocks,虽然我理解了它们背后的概念,但我在理解如何使用模拟对象方面遇到了一些麻烦。 具体来说,我有两个问题,我想回答。 首先,unit testing文件I / O操作的正确方法是什么? 其次,在我学习unit testing的尝试中,我遇到了dependency injection。 得到Ninject的设置和工作后,我想知道是否应该在我的unit testing中使用DI,或直接实例化对象。

是否有Symfony2默认容器服务的列表?

下面是一个从Symfony2网站取得的关于定义一个自定义服务 (YAML符号)的例子: services: newsletter_manager: class: %newsletter_manager.class% arguments: [@mailer, @templating] 是否有一个默认的Symfony2服务对象的列表可以注入到自定义服务作为参数(如@mailer , @templating , @doctrine )? 我知道它们来自Container (例如,在每个Controller类中都可用)。 我已经尝试转储所有服务,但我正在寻找更详细的列表: php app/console container:debug logger container Symfony\Bridge\Monolog\Logger mailer container Swift_Mailer translator n/a alias for translator.default …

cocoa的dependency injection框架?

Interface Builder可以用于Cocoa应用程序中的基本dependency injection,但是当不想在NIB文件中实例化对象时,任何人都可以意识到Objective-C / Cocoa的更完整的dependency injection框架? 编辑 为了澄清,我认识到IB可以用于基本的DI,但我正在寻找一个更完整的function框架,包括单独的生产和testingconfiguration,沿着Groovy或弹簧线。