Alternatively if you do want that behavior, there's nothing stopping you
from having it :)
Take a look at this post:
http://kozmic.pl/archive/0001/01/01/convention-based-dependency-injection-with-castle-microkernelwindsor.aspx
On 2010-04-23 05:50, bling wrote:
This isn't a bug, it's by design.
I think you're confusing what Named() does. It's not used to specify
which property to inject...rather, it doesn't have anything to do with
the dependency itself. It is only for Windsor internally to
differentiate between different components. Windsor uses the 1st
registration as default, which is why your class got injected with
"string1", which was registered first.
To specify dependency overrides, take a look
at .DependsOn, .ServiceOverrides, and .DynamicParameters
Hope that helps!
On Apr 21, 5:35 am, Konstantin<[email protected]> wrote:
When I have a class with public property, and several components of
property type are registered. I expected that castle to push the
component with name matching the property name if exists.
here is code illustrating that it is not so but at the same moment
DependencyKey of prop dependency is set to property name.
Looks quite strange , may be a bug...
public class ClassWithProperty
{
public IComparable Value { get; set; }
}
[Test]
public void PropertyInjectionTest()
{
WindsorContainer c=new WindsorContainer();
c.Register(
Component.For<ClassWithProperty>(),
Component.For<IComparable>().Instance("string1"),
Component.For<IComparable>().Instance("string2").Named("Value")
);
ComponentModel model = c.Kernel.GraphNodes.Where(n => (n
as ComponentModel).Implementation ==
typeof(ClassWithProperty)).First() as ComponentModel;
var prop = typeof (ClassWithProperty).GetProperty("Value",
BindingFlags.Public | BindingFlags.Instance);
PropertySet propSet =
model.Properties.FindByPropertyInfo(prop);
Assert.AreEqual("Value",
propSet.Dependency.DependencyKey,"Dependency key was not set");
var instance = c.Resolve<ClassWithProperty>();
Assert.AreEqual("string2", instance.Value, "wrong value
was injected");
}
--
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
athttp://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.