Yep - that's what I'll be doing.  I just wondered if there was a way to
accomplish it with the built in Windsor behavior.

Thanks all.

Symon.

Symon Rottem
http://blog.symbiotic-development.com


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.

Reply via email to