我正在编写一个新的.NET库供我公司内部使用,它将通过依赖注入(inject)使用IoC。当然,如果我们使用IoC容器来解析实例,这个库将更容易使用。但是,将调用此库的代码目前不使用任何类型的依赖注入(inject),并且重构遗留代码以使用DI超出了我的项目范围。那么,在这个遗留代码中开始使用容器从我的新库中获取实例的最佳方法是什么?如果可能的话,我希望避免使用对我选择的任何IoC容器的硬引用来乱扔上述遗留代码。由于我是DI的新手,我们很可能会在某个时候改变我们想要使用哪个Container的想法。如果我用类似CommonServiceLocator的东西包裹我的容器CodePlex上
我使用MEF将接口(interface)映射到实现类作为DI的一种方式。例如,我对接口(interface)使用Import属性,对实现类使用Export属性。我的理解是MEF框架将创建实现类实例并将它们保存在MEF的容器中以供使用或自动注入(inject)。我的一些实现类实现了IDispose接口(interface)。由于实例是由MEF创建的,我想我应该让MEF在MEF退出时调用组件的Dispose方法(如果它们是一次性的)。例如,在我的应用程序中,我持有对MEF容器的引用。当应用程序终止时,我调用容器的Dispose方法。问题是我的组件的Dispose从未被调用。以下是一些关于导
一般来说,我喜欢让应用程序完全不了解IoC容器。但是我遇到了需要访问它的问题。为了消除痛苦,我使用了一个基本的单例。在你跑到山上或拔出霰弹枪之前,让我回顾一下我的解决方案。基本上,IoC单例绝对什么都不做,它只是委托(delegate)给一个必须传入的内部接口(interface)。我发现这使得使用单例的工作不那么痛苦。下面是IoC包装器:publicstaticclassIoC{privatestaticIDependencyResolverinner;publicstaticvoidInitWith(IDependencyResolvercontainer){inner=conta
我正在设计一个能够进行一些基本图像处理的简单图片查看器。目前,我遇到的问题是始终将PictureBox居中放置在TabPage中,并保持图片框的宽度和大小与其显示的图片相同。到目前为止,我没有成功。我在表单构造函数中调用了以下代码以将其置于中心。它第一次使图片框居中:privatevoidSetPictureBoxOriginalSizeAndLocation(boolmakeImageNull=false,DockStyledockStyle=DockStyle.None){if(makeImageNull)picBoxView.Image=null;picBoxView.Dock=
我目前正在学习如何使用Autofac,而且我一直坚持处理IDisposable对象确定性。在我陈述我的问题之前,让我先介绍一下情况。起始位置:假设我的对象模型是通过以下接口(interface)定义的:interfaceIApple:IDisposable{voidConsume();}interfaceIHorse{voidEat(IAppleapple);//issupposedtocallapple.Consume()}interfaceIHorseKeeper{voidFeedHorse();//issupposedtocallhorse.Eat(apple)//where'h
我正在尝试使用以下代码将我的公钥和私钥存储在容器中:CspParameterscp=newCspParameters();cp.KeyContainerName="Test";RSACryptoServiceProviderrsa=newRSACryptoServiceProvider(cp);我想知道的是容器的位置。容器在文件系统中的位置? 最佳答案 您将在以下目录(*)中找到key文件:Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonA
我有一个要求,即在创建公司时在我的存储帐户中创建一个关联的blob存储容器,并将容器名称设置为传入的字符串变量。我尝试了以下操作:publicvoidAddCompanyStorage(stringsubDomain){//getthestorageaccount.CloudStorageAccountstorageAccount=CloudStorageAccount.Parse(System.Configuration.ConfigurationManager.AppSettings["StorageConnectionString"].ToString());//blobclie
我想知道在自身内部注册容器是否有任何副作用IContainercontainer;ContainerBuilderbuilder=newContainerBuilder();container=builder.Build();builder.RegisterInstance(container).As();像这样使用它builder.RegisterType().As().WithParameter(newResolvedParameter((pi,ctx)=>pi.ParameterType==typeof(IContainer)&&pi.Name=="Container",(pi,
我刚刚偶然发现了这个:在Unity容器中,我想注册IDictionary;假设它是IDictionary_unityContainer=newUnityContainer().RegisterType,Dictionary>();但如果我尝试vard=_unityContainer.Resolve>();无法解析...我明白了...Microsoft.Practices.Unity.ResolutionFailedException:Microsoft.Practices.Unity.ResolutionFailedException:解析依赖失败,type="System.Colle
假设我有以下4个.net程序集:Winforms用户界面业务逻辑SQLServer数据访问(实现IRepository)通用接口(interface)(IRepository等的定义)我的业务逻辑(2)使用构造函数依赖注入(inject)通过IRepository(在4中定义)调用数据访问层(3)。然而,当我创建一个业务对象时,我需要传入一个实际的存储库。我通过在我的业务逻辑层中使用一个单例类来返回当前正在使用的实现IRepository的具体对象来实现这一点。我得出的结论是这是一件坏事,因为我的业务逻辑层现在必须引用3和4。我想我需要一个IoC容器,但问题是我在哪里创建/放置它,因为