我对温莎城堡相当陌生,正在调查伐木设施的内部和外部。这似乎相当令人印象深刻,但我唯一无法解决的是温莎在我的类(class)中设置Logger属性的地方。如以下代码所示,如果类尚未设置但当Resolve完成运行时Logger属性已设置,则将Logger设置为nullLogger。privateILoggerlogger;publicILoggerLogger{get{if(logger==null)logger=NullLogger.Instance;returnlogger;}set{logger=value;}}所以我想知道windsor如何以及在何处设置我的Logger属性。干
我的global.axax中有代码:protectedvoidApplication_Start(){WindsorContainer=newWindsorContainer();WindsorContainer.Install(FromAssembly.InDirectory(newAssemblyFilter(AppDomain.CurrentDomain.RelativeSearchPath)));ControllerBuilder.Current.SetControllerFactory(newWindsorControllerFactory(WindsorContainer.
也许这很容易,但是在网上搜索已经让我头疼了问题是:interfaceIValidator{voidValidate(objectobj);}publicclassValidatorA:IValidator{publicvoidValidate(objectobj){}}publicclassValidatorB:IValidator{publicvoidValidate(objectobj){}}interfaceIClassA{}interfaceIClassB{}publicclassMyBaseClass{protectedIValidatorvalidator;publicvo
Castlewiki在几个地方说我应该总是为通过容器解析的组件调用container.Release()。这对于复杂的生活方式管理技术(例如LifeStyle.Pooled)或使用专门设施时显然是有意义的......但我真的必须释放单例(它在容器被处理之前一直存在)和非一次性transient对象吗?如果我逐步执行对transient对象或单例的Release()调用,这些调用似乎多余的-例如在transient对象未实现IDisposable的情况下,内核只是注意到它没有跟踪对象并返回...似乎有一个“组件负担”的概念来跟踪对解析transient对象时可能构造的其他一次性组件的“间
我们正在重新设计一些遗留软件以使其更易于测试,并决定使用依赖注入(inject)和CaSTLe.Windsor来帮助我们。首先,我们的目标:*许多装饰器都在数据流上工作。*装饰器的多种组合是可能的,并且可能需要每种情况下的根节点从不同的地方获取数据。从技术上讲,我们的设计如下:interfaceIUpdateableValue{TGet();};我们有使用多个组件检索三组数据,所有组件都实现IUpdateableValue()(伪代码):JsonParser(Decompressor(Decrypter(decryptionKeyFileCache(filename,HttpWebDo
我正在使用CaSTLeWindsor来管理Controller实例(除其他外)。我的Controller工厂看起来像这样:publicclassWindsorControllerFactory:DefaultControllerFactory{privateWindsorContainer_container;publicWindsorControllerFactory(){_container=newWindsorContainer(newXmlInterpreter());varcontrollerTypes=fromtinAssembly.GetExecutingAssembly
我是CaSTLeWinsorNoob。我有一个一团糟的WebForm项目。我正在尝试解决测试用户注册的依赖性。如何到达当前的WindsorContainer?IWindsorContainercontainer=???;IRegistrationLogicregistrationLogic=container.Resolve();_registrationLogic.Register();这是我的Bootstrap:publicclassWindsorConfigTask:ICastleBootstrapperTask{publicvoidExecute(){Container.Add
我在运行我的应用程序时遇到此错误(不是在编译时):Couldnotloadfileorassembly'Castle.Windsor,Version=2.1.0.0,Culture=neutral,PublicKeyToken=407dd0808d44fbdc'oroneofitsdependencies.Thelocatedassembly'smanifestdefinitiondoesnotmatchtheassemblyreference.(ExceptionfromHRESULT:0x80131040)我的解决方案有很多项目,尽可能使用项目引用,但其中一些项目具有对外部依赖项的
我的应用程序中有以下单元测试:[TestMethod]publicvoidWindsor_Can_Resolve_HomeController_Dependencies(){//SetupWindsorContainercontainer=newWindsorContainer();container.Install(FromAssembly.Containing());//Actcontainer.Kernel.Resolve(typeof(HomeController));}这样做的目的是确保我没有任何在访问该Controller上的操作之前不会意识到的windsor配置问题。问题
我在几个代码示例中看到人们使用IKernel而不是使用IWindsorContainer。为什么是这样?这是一个例子:http://docs.castleproject.org/(S(kwaa14uzdj55gv55dzgf0vui))/Windsor.Windsor-tutorial-part-two-plugging-Windsor-in.ashx在上面的例子中它开始咬我,因为我添加了一个子解析器Container.Kernel.Resolver.AddSubResolver(newCollectionResolver(Container.Kernel,true));这将允许我注入