you can just write your own IXmlInterperter in order to achive that, and on the Container Install Call it.
another way is to Oveload the Resolve on the Component like on the following post by Tuna. check out this Code: http://code.google.com/p/mausch/source/browse/trunk/WindsorInitConfig/WindsorInitConfig/AppSettingsResolver.cs?r=335 2010/10/16 Krzysztof Koźmic <[email protected]> > why not use appsettings for that? > > > On 16/10/2010 6:09 PM, Symon Rottem wrote: > > Thanks Jason, but the entire point of what I'm trying to achieve is *not* > put the value into the code. > > I wanted to use the container to populate the constructor with a value > *from the xml*, specifically so it doesn't have to be hard coded while still > hard coding the actual component registration. > > I assumed the container would be capable of parsing and holding the values > from the properties node to use in fluent registration, but so far it > doesn't look like it does and I'll need to parse the XML myself. > > Cheers, > > Symon. > > > Symon Rottem > http://blog.symbiotic-development.com > > > On Fri, Oct 15, 2010 at 8:30 PM, Jason Meckley <[email protected]>wrote: > >> you want to pass the actual value, not the property reference. >> Parameter.ForKey("password").Eq("SomePassword") >> >> here is an example taken from rhino.esb. here an array of services are >> registered instead of a single property value. the concept should be >> similar. >> protected override void RegisterComponents() >> { >> Kernel.Register( >> Component.For<IDeploymentAction>() >> .ImplementedBy<CreateLogQueueAction>(), >> Component.For<IDeploymentAction>() >> .ImplementedBy<CreateQueuesAction>(), >> Component.For<IServiceBus, IStartableServiceBus>() >> .ImplementedBy<DefaultServiceBus>() >> .LifeStyle.Is(LifestyleType.Singleton) >> .DependsOn(new >> { >> messageOwners = messageOwners.ToArray(), >> }) >> >> .Parameters(Parameter.ForKey("modules").Eq(CreateModuleConfigurationNode()) >> ) >> ); >> } >> >> private IConfiguration CreateModuleConfigurationNode() >> { >> var config = new MutableConfiguration("array"); >> foreach (Type type in messageModules) >> { >> config.CreateChild("item", "${" + type.FullName + "}"); >> } >> return config; >> } >> >> another idea: get access to the configuration store, get the >> properties node and pull the password_property value from the >> configuration store. >> >> I like to use the dependson() method to register constants. i find >> it's cleaner. example: >> class Foo >> { >> public int Number {get;set;} >> >> Foo(string text) >> { >> } >> } >> >> Component.For<Foo>().DependsOn(new{text = "hi", Number = 1}) >> >> >> On Oct 15, 1:47 pm, Symon Rottem <[email protected]> wrote: >> > Sure thing. It's a bit of a contrived example, but here goes: >> > >> > I want to have some properties registered in my <castle> section in my >> > web.config: >> > >> > <configSections> >> > <section name="castle" >> > type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, >> > Castle.Windsor"/> >> > </configSections> >> > >> > <castle> >> > <properties> >> > <password_property>SomePassword<password_property> >> > </properties> >> > </castle> >> > >> > And then use them when registering a component fluently: >> > >> > windsorContainer = new WindsorContainer(); >> > windsorContainer.Install(Configuration.FromAppConfig()); >> > >> > windsorContainer.Register( >> > Component >> > .For<SomeComponent>() >> > .Parameters(Parameter.ForKey("password").Eq("#{password_property}")) >> > ); >> > >> > Could be I'm doing it all wrong, but what I get passed into the >> "password" >> > parameter in the constructor of my SomeComponent instance is the value >> > "#{password_property}" rather than "SomePassword" as I sexpected. >> > >> > What am I doing wrong? >> > >> > Cheers, >> > >> > Symon. >> > >> > Symon Rottemhttp://blog.symbiotic-development.com >> > >> > On Fri, Oct 15, 2010 at 7:20 PM, Jason Meckley <[email protected] >> >wrote: >> > >> > > yes you can, there are multiple ways to configure components. first >> > > get the values from the xml file. that is external to windsor. then >> > > you can use the DependsOn fluent method or ServiceOverride or >> > > Property.For().Eq() to configure the component. there may be more >> > > options as well but these are ones I'm aware of. >> > >> > > if you provide a code sample of what you want to do we may be able to >> > > help. >> > >> > > On Oct 15, 12:56 pm, João Bragança <[email protected]> wrote: >> > > > It's an ugly solution, but what about loading the XML file in an >> > > > xmldocument/xdocument and getting the properties that way? >> > >> > > > On Oct 15, 7:15 am, Symon Rottem <[email protected]> wrote: >> > >> > > > > Is it possible to use property reference notation (#{property}) in >> the >> > > > > fluent API? >> > >> > > > > I want to use properties that are registered in XML to set values >> on >> > > > > components registered via the API, but I don't seem to be having >> any >> > > luck. >> > >> > > > > Cheers, >> > >> > > > > Symon. >> > >> > > > > Symon Rottemhttp://blog.symbiotic-development.com >> > >> > > -- >> > > You received this message because you are subscribed to the Google >> Groups >> > > "Castle Project Users" group. >> > > To post to this group, send email to >> [email protected] >> > > . >> > > To unsubscribe from this group, send email to >> > > [email protected]<castle-project-users%[email protected]> >> <castle-project-users%[email protected]<castle-project-users%[email protected]> >> > >> > > . >> > > For more options, visit this group at >> > >http://groups.google.com/group/castle-project-users?hl=en. >> > >> > >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Castle Project Users" group. >> To post to this group, send email to >> [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<castle-project-users%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/castle-project-users?hl=en. >> >> > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Users" group. > To post to this group, send email to [email protected] > . > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/castle-project-users?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Users" group. > To post to this group, send email to [email protected] > . > To unsubscribe from this group, send email to > [email protected]<castle-project-users%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/castle-project-users?hl=en. > -- You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en.
