Tag: dependency injection

WCF服务可以有构造函数吗?

当我在我的解决scheme中新build一个WCF服务时,我可以执行以下操作,有一个参数传入的构造函数? 如果是,运行时如何以及在何处填充我所需的IBusinessLogic对象? [ServiceContract] public interface IServiceContract { [OperationContract] … } public class MyService : IServiceContract { IBusinessLogic _businessLogic; public ServiceLayer(IBusinessLogic businessLogic) { _businessLogic = businessLogic; } … }

将dependency injection框架用于具有许多依赖关系的类

我一直在寻找.NET的各种dependency injection框架,因为我感觉我正在从事的这个项目将从中受益匪浅。 虽然我认为自己对这些框架的能力有了很好的把握,但我还是不清楚如何最好地将它们引入大型系统。 大多数演示(可以理解)往往是相当简单的类有一个或两个依赖关系。 我有三个问题 首先 ,你如何处理那些常见但无趣的依赖,如ILog,IApplicationSettings,IPermissions,IAudit。 对于每个类来说,将它们作为构造函数的参数看起来有点过分。 在需要的时候使用DI容器的静态实例来获取它们会更好吗? MyClass(ILog log, IAudit audit, IPermissions permissions, IApplicationSettings settings) // … versus … ILog log = DIContainer.Get<ILog>(); 其次 ,你如何处理可能使用的依赖关系,但创build起来可能会很昂贵。 示例 – 类可能对ICDBurner接口有依赖关系,但不希望创build具体实现,除非实际使用CD刻录function。 你是否在构造函数中传入了工厂的接口(例如ICDBurnerFactory),还是直接通过一些静态的方式直接进入DI Container,并在需要的时候请求它? 第三 ,假设你有一个大型的Windows窗体应用程序,其中最高级别的GUI组件(例如MainForm)是潜在的数百个子面板或模态窗体的父项,每个子窗体可能有几个依赖关系。 这是否意味着MainForm应该被设置为依赖关系的子集的所有依赖关系的超集? 如果你这样做,那么最终不会创build一个巨大的自我膨胀的怪物,它构build了你创buildMainForm时所需要的每一个类,在这个过程中浪费了时间和内存?

Android和dependency injection

我一直在环顾四周,了解在Android开发中使用dependency injection容器的一些信息。 具体来说,如何重写创build一个Activity的方式,也将工作时回来被杀害(不pipe什么原因)。 有没有人有这方面的经验?

Spring:使用构build器模式创build一个bean

我使用ektorp连接到CouchDB。 构buildektorp HttpClient实例的方法是使用构build器模式: HttpClient httpClient = new StdHttpClient.Builder() .host("mychouchdbhost") .port(4455) .build(); 我对Spring比较陌生。 请咨询我如何在我的上下文中configuration一个HttpClient来通过Builder创build它。 一种方法是使用@Configuration 。 还有其他的select吗?

使用Angular JS向其他模块configuration注入常量

我想在整个应用程序中共享一些variables,如基本path。 这些variables需要在模块configuration期间进行访问。 我的意见是,我可以使用一个常数或提供者。 我有几个模块,每个模块都有自己的路由configuration。 在这些路由configuration中,我想访问一些设置,例如。 这适用于应用程序模块configuration,但不适用于其他模块configuration(对于其他模块的控制器),我总是会得到“未知提供者:来自myApp.orders的信息”。 var myApp = angular.module('myApp', ['myApp.orders']); myApp.constant('info', { version : '1.0' }); myApp.config(function(info) { console.log('app config: ' + info.version); }); myApp.controller('MyController', function (info) { console.log('controller: ' + info.version); }); var orders = angular.module('myApp.orders', []); // Remove comments to see it fail. //orders.config(function(info) { // console.log('orders config: ' + info.version); //}); […]

MEF构造器注入

我试图找出MEF的构造函数注入属性。 我不知道如何告诉它加载构造函数的参数。 这是我正在尝试加载的属性 [ImportMany(typeof(BUsers))] public IEnumerable<BUsers> LoadBUsers { get; set; } 这是我用来导入程序集的代码。 try { var catalog = new AggregateCatalog(); catalog.Catalogs.Add(new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly())); catalog.Catalogs.Add(new DirectoryCatalog("DI")); var container = new CompositionContainer(catalog); container.ComposeParts(this); } 这是我正在尝试加载的课程 [Serializable] [Export(typeof(BUsers))] public class EditProfile : BUsers { [ImportingConstructor] public EditProfile(string Method, string Version) { Version = "2"; Action = "Edit"; TypeName = "EditProfile"; […]

温莎城堡有什么缺点?

我一直在寻找城堡项目,特别是温莎。 我对这种技术的可能性印象深刻,拥有松散耦合系统的好处显而易见。 唯一我不确定的是,如果使用这种方法有任何缺点,特别是在asp.net? 例如性能命中等。 我正试图让这个方法的好处对我的开发人员可见,并且正在受到以下的回击: 这是使用reflection,每次从容器调用一个对象,reflection必须使用,所以性能将是可怕的。 (这是这种情况吗?每次通话都使用reflection?) 如果我依靠接口; 我如何处理那些已经join了课堂的额外方法和属性的对象呢? (通过inheritance)

Symfony2:在服务中注入当前用户

我正在尝试将当前login的用户注入到服务中。 我的目标是扩展一些树枝function,根据用户的喜好输出。 在这个例子中,我想使用用户特定的时区输出任何date函数。 似乎没有办法将当前用户注入到服务中,这对我来说似乎很奇怪。 注入安全上下文时,即使用户已login,它也没有令牌 我正在使用FOS用户包。 services: … twigdate.listener.request: class: App\AppBundle\Services\TwigDateRequestListener arguments: [@twig, @security.context] tags: – { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } <?php namespace App\AppBundle\Services; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; class TwigDateRequestListener { protected $twig; function __construct(\Twig_Environment $twig, SecurityContext $context) { $this->twig = $twig; //$this->user = $context->get…; var_dump($context); die; } public function onKernelRequest(GetResponseEvent $event) […]

如何在Spring上下文中注入模拟

我有一个使用一些Spring上下文的testing。 在这些情况下,宣布了一些bean。 我希望testing使用上下文bean的实际实现,除了其中之一,我想要使用MOCK。 我试图使testingconfiguration组件(使用@Configuration注释),但XML似乎优先于@Bean注释,所以它不起作用,这样: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"context1.xml", "context2.xml", …}) @Configuration public class MyTest{ @Inject private MyTargetBean target; private AnotherBean myMock = mock(AnotherBean.class); @Bean public AnotherBean myMock() { return myMock; } ….. 我知道我可以在XML中定义Mocks,但为此我需要为每个testing添加一个额外的XML文件。 我想避免这种复杂性。 有没有办法在一个上下文中注入一个bean(像一个模拟),而不是通过XML? 谢谢!

Javadependency injection:XML或注释

注释变得stream行。 Spring-3支持它们。 CDI很大程度上依赖于他们(我不能使用CDI和注释,对不对?) 我的问题是为什么 ? 我听到几个问题: “它有助于摆脱XML”。 但是,什么是坏的XML? 依赖性本质上是声明性的,而XML对于声明是非常好的(对于命令式编程来说非常糟糕)。 有了好的IDE(比如想法),编辑和validationXML非常容易,不是吗? “在许多情况下,每个接口只有一个实现”。 那不是真的! 几乎我的系统中的所有接口都有模拟testing的实现。 任何其他问题? 而现在我的XML的增加: 你可以在任何地方注入任何东西(不仅是有注释的代码) 我应该怎么做,如果我有一个接口的几个实现? 使用限定符? 但是这迫使我的class级知道需要什么样的注射。 这不利于devise。 基于XML的DI使我的代码变得清晰:每个类都不知道注入,所以我可以对它进行configuration并以任何方式进行unit testing。 你怎么看?