当前位置: 首页 > 编程语言 > C#

如何获取当前的温莎城堡容器?Share

时间:2023-04-10 20:09:56 C#

我如何获得当前的温莎堡补给箱?我是CastleWinsorNoob。我有一个WebForm项目,它是一个热点。我正在尝试解决依赖关系以测试用户注册。如何到达当前的WindsorContainer?IWindsorContainer容器=???;IRegistrationLogicregistrationLogic=container.Resolve();_registrationLogic.Register();这是我的引导程序:publicclassWindsorConfigTask:ICastleBootstrapperTask{publicvoidExecute(){Container.AddFacility();Container.Register(Component.For().ActAs(newDefaultClientModel{Endpoint=WcfEndpoint.ForContract().FromConfiguration("surveyClient2")}),Component.For().ActAs(newDefaultClientModel{Endpoint=WcfEndpoint.ForContract().FromConfiguration("localMembershipClient")}));Container.Register(Component.For().ImplementedBy().LifeStyle.Is(LifeStyleType));}publicIWindsorContainerContainer{get;放;}#regionICastleBootstrapperTask成员publicCastle.Core.LifestyleTypeLifeStyleType{get;放;}#endregion}有很多方法可以解决这个问题,但我认为最常见的是创建一个单例帮助程序类来保存引用。请记住,您希望应用程序使用DI自动从容器中获取所有内容。也许只有少数来自应用程序的调用会进入容器。查看温莎的控制器工厂。像这样...publicstaticclassContainerManager{publicstaticIWindsorContainerContainer=null;现在我已经学会了更进一步,您可以包含一些实用程序并获得...publicstaticclassContainerManager{privatestaticIWindsorContainer_container=null;publicstaticIWindsorContainerContainer{get{if(_container==null){//运行安装程序,设置_container=newcontainer}return_container;我也意识到你可能会问我如何从下游依赖对象中获取容器......你可以使用你的注册容器。默认情况下它会注册IKernel,但您可以稍后注册IWindsorContainer进行注入。我强烈反对直接使用容器。就像上面的代码一样……完成后您会发布吗?Windsor有用于此目的的接口。它称为IContainerAccessor。实现它的最佳位置是在Global.asax文件中:publicclassWebApplication:HttpApplication,IContainerAccessor{staticIWindsorContainercontainer;publicIWindsorContainerContainer{get{返回容器;}}protectedvoidApplication_Start(){varbootstrapper=newWindsorConfigbootTasker();。执行();container=bootstrapper.Container;}protectedvoidApplication_End(){container.Dispose();在你的webform中的用法如下:以上是C#学习教程:HowdoIgetthecurrentCastleWindsorcontainer?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注——varcontainerAccessor=Context.ApplicationInstanceasIContainerAccessor;varcontainer=containerAccessor.Container;本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: