Castle Windsor:ResolveAll不返回带有构造函数参数的服务

时间:2012-08-09 08:36:23

标签: service constructor castle-windsor

我有一个接口和两个实现它的类。其中一个在其构造函数中有一个参数。我在app.config中将它们都注册为服务。不幸的是,我无法在我的代码中解决这两个问题:不返回带有构造函数的类。

E.g:

interface ITest
{
}

class Test : ITest
{
    private string a;

    public Test(string a)        
    {
        this.a = a;
    }
}

class Test2 : ITest
{
}

这是我的配置:

<castle>
    <components>
        <component id="Test" type="XYZ.Test, XYZ" service="XYZ.ITest, XYZ"/>                
        <component id="Test2" type="XYZ.Test2, XYZ" service="XYZ.ITest, XYZ"/>
    </components>
</castle>

以下是我尝试在代码中获取服务的方式:

ITest[] resolveAll = container.ResolveAll<ITest>(new {a ="aText" });

数组“resolveAll”仅包含“Test2”但没有“Test”的痕迹。如何获得这两个课程?

我注意到如果我用id“Test”解决:

object resolve = container.Resolve("Test", new { sessionId = "sessionId" });

我获得了'测试'课程。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

其实我在旧版的温莎城堡。在最后一个版本(3.1)上,这可行。