inversion-of-control相关内容
我真的只是从MVVM,IoC和依赖注入开始,我遇到了一个绊脚石,我不知道如何解决,但我确实知道它为什么会发生。 我将Castle Windsor用于DI和IoC功能,并将MVVM Light用作WPF应用程序中的MVVM框架。使用本教程让Castle Windsor创建一个 MainPageViewModel ,该 IGroupRepository 注入到构造函数中。我已经在温莎城堡中对此进
..
我试图使用Castle Windsor实现Command,CommandHandler和CommandDispatcher模式,而无需手动要求容器根据Command类型(通常被认为是反模式)来解析CommandHandler。 我找到了此较早的文章,但是 ITypedFactoryComponentSelector 的实现已更改,因此现在它返回一个Func,而不是 TypedFactoryC
..
是否可以像在WindsorContainer.AddChildContainer()中那样在StructureMap中将容器链接在一起? 我想实现3个容器级别; -1个页面请求级别 -1个会话级别 -1个应用程序级别 这些随后将被链接在一起,因此只有一个实例 容器的级别实际上并不重要,只是是否有能力将它们链接在一起。 解决方案 这似乎可以解决问题,不确定是否有更好的
..
我有很多使用IMyService作为构造函数参数的类。 例如 ClassA(IMyservice myservice) //应该为IMyService使用Concrete1 ClassB(IMyservice myservice) //为此应该使用Concrete2 IMyService 我该如何注册,以便ClassB获得Concrete2,ClassA
..
我正在使用温莎城堡作为我的IoC容器,但遇到了一些问题。最好用代码解释一下,因此我将尝试一下。 我有一个工厂类,应该为我提供某些接口的实现: 公共接口IObjectCreatorFactory { IObjectCreator GetObjectCreator(Type objectType); } 公共接口IObjectCreator { T CreateObject
..
我的城堡核心存在问题,我试图将两个不同的数据库连接注入到特定的存储库。 公共类Repository1 { public Repository1(System.Data.Common.DbConnection conn){} } 公共类Repository2 { 公共Repository2(System.Data.Common.DbConnection conn){} }
..
我正在努力让IOC在远程场景下工作。我已经设置了应用程序服务器来发布通过XML配置的服务(SingleCall)。 此工作方式众所周知, RemotingConfiguration.Configure(ConfigFile,true); 让我说我的服务看起来像这样(伪代码) 公共类TourService:ITourService { IReposito
..
在我了解了有关依赖注入和IoC的所有知识之后,我决定尝试在我们的应用程序(这是一个5万个LOC多层网络应用程序,因此不希望它过于矫健)中使用Windsor Container。我使用了一个简单的静态类来包装容器,并在启动应用程序时对其进行了初始化,目前效果还不错。 我的问题是关于单元测试的。我知道DI将使我有可能将类协作者的存根/模拟实现注入被测类,从而使我的生活更加轻松。我已经使用这种技术
..
昨天,当我偶然发现有关这两种新的IoC工具的文章时,我正在阅读该站点上的一些文章。我应该首先学习哪个? 解决方案 Castle.Windsor或Spring.NET都不是新的。 p> 温莎城堡(Castle Windsor)始于2004年底 Spring.NET始于2006年初 li> 它们是两个可比较的 DI容器,其本质上旨在提供相同的服务,因此您无需先学习一个,再也不需要
..
我想在给定的Windsor容器中重新定义(默认)实现。那是OverWrite的目的吗? container.Register( Component.For
..
我有一些SignalR集线器,可能需要访问一些瞬态和单例依赖项。挂接Hub的创建很容易并且可以正常工作,但是SignalR会对创建的Hub进行自己的Dispose()调用,而不是通知依赖项解析器并让其参与处理。 如果依赖项被注册为单例,这没什么大不了的,但是如果将它们注册为瞬态,则它们将永远不会被处置(如果需要),并且温莎将使它们保持生存直到温莎 我看到几种可能的处理方式...
..
解析类型时是否可以传递列表构造函数参数?如果可能,我想使用编程配置。我一直在使用“参数”方法,如下所示,但我尚未迷失答案。 容器.Register( 组件 .For() .ImplementedBy() .Parameters(...) ); DoSomething类看起来像这样 公共类DoSomet
..
例如,我有两个接口:ICustomerService和IOrderService,每个接口都有几个函数,例如GetCustomer,GetOrder等。 我希望一个类实现两个接口:服务器。 温莎城堡对此有何反应? 首先有可能吗? 当我基于两个接口之一解析Server对象时,会得到相同的对象吗? 当我有一个在其参数中同时包含两个接口的构造函数时,会发生什么?仍然会构造一个对象。
..
实例化一个类时,默认情况下,Windsor将该类的所有公共属性视为可选依赖项,并尝试满足它们。就我而言,这会创建一个相当复杂的循环依赖关系,从而导致我的应用程序挂起。 我如何明确告诉温莎城堡它不应该试图满足公共财产的要求?我认为必须有某种程度的属性。但是我找不到它,所以请让我知道合适的名称空间/程序集。 如果有没有属性的方法(例如Xml Configuration或configurat
..
我有使用AutoMapper的界面: 公共接口IMapper { object Map(object source,type sourceType,type destinationType); } 然后对于每种类型的数据,我都有一个不同的mapper类,例如: 公共类UserMapper:IMapper { 静态UserMapper() { Map
..
到目前为止,我一直在使用ASP.NET MVC在Castle.Windsor中学习IoC / DI,但是我有一个在Windows Forms中完成的辅助项目,我想知道是否存在一种有效的方法来为此使用它。 我的问题在于创建表单,服务等。在ASP.NET MVC中,有一种“激活器”可以在后台进行此操作,但是Windows窗体中不是这种情况。我必须创建一个像 var form = new fcls
..
我有一个实现多个接口的类。 我想通过XML注册这些接口。 我发现的只是有关新Fluent接口的文档。 是否通过XML支持此选项? 添加此功能会涉及什么? 解决方案 [更新]这是现在可以在Windsor 2.1或更高版本中使用。请参阅语法文档,此处。 > 到目前为止,该功能尚未在XML解释器中实现。工具(显然,该技术在想要添加现有配置解析器中缺少的其他功能时也很有用)。
..
在温莎城堡中以编程方式列出已注册类型的最简单方法是什么? 谢谢 解决方案 使用 IKernel.GetAssignableHandlers(typeof(object)): IWindsorContainer容器= ... foreach(容器中的var处理程序。Kernel.GetAssignableHandlers(typeof(object))){ Conso
..
(与此问题相关, EF4 :启用延迟加载后,为什么必须启用代理创建?)。 我是DI的新手,所以请多多包涵。我知道容器负责实例化我所有的注册类型,但是要这样做,它需要引用我的解决方案中的所有DLL及其引用。 如果我不使用DI容器,则不必在MVC3应用程序中引用EntityFramework库,而只需引用业务层,即可引用我的DAL / Repo层。 我知道最终所有DLL都包含在bin
..
我习惯于使用 TopShelf 编写Windows服务来完成所有在Windows中无法完成的工作Web请求,并逐渐转向使用Azure功能. 有了topshelf,我通常可以做到 在服务启动时扫描并注册 为每个票证/请求使用嵌套容器 如何在天蓝色函数调用中使用IOC?我应该完全使用它吗? 解决方案 在Azure Functions中,目前还没有一种以自然方式进行IOC的方
..