Castle Windsor使用参数解析对象

时间:2013-01-27 07:42:18

标签: dependency-injection castle-windsor

public class Component1
{
    public Component1(Component2 comp, Component3 comp3)
    {
        Component2 = comp;
        Component3 = comp3;
    }

    public Component3 Component3 { get; set; }

    public Component2 Component2 { get; set; }
}

public class Component3
{
    public Component3(Component2 comp)
    {
        Component2 = comp;
    }

    public Component2 Component2 { get; set; }
}

public class Component2
{
    private Guid _guid = Guid.NewGuid();
}

[TestMethod]
    public void InjectingUsingDictionary()
    {
        var container = new WindsorContainer();
        container.Register(Component.For<Component1>().ImplementedBy<Component1>().LifestyleTransient());
        container.Register(Component.For<Component2>().ImplementedBy<Component2>().LifestyleTransient());
        container.Register(Component.For<Component3>().ImplementedBy<Component3>().LifestyleTransient());
        Component1 c;
        var component2 = new Component2();
        using (container.BeginScope())
        {
            IDictionary arguments = new Dictionary<string, object> { { "comp", component2 }, { "Component2", component2 } };
            c = container.Resolve<Component1>(arguments);
            c.Component2.Should().Be(c.Component3.Component2);
        }
    }

大家好! 当我解决时,我希望传递Component2的实例来初始化所有道具,Windsor将它传递给整个对象图中的所有构造函数参数。有可能吗?

0 个答案:

没有答案