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]
<mailto:[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]
<mailto:[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
<http://blog.symbiotic-development.com>
>
> On Fri, Oct 15, 2010 at 7:20 PM, Jason Meckley
<[email protected] <mailto:[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]
<mailto:[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]
<mailto:[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
<http://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]
<mailto:[email protected]>
> > .
> > To unsubscribe from this group, send email to
> > [email protected]
<mailto:castle-project-users%[email protected]><castle-project-users%[email protected]
<mailto: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]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto: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].
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.