0

インターフェイスとそれを実装する2つのクラスがあります。それらの1つには、コンストラクターにパラメーターがあります。app.configに両方をサービスとして登録しました。残念ながら、コードで両方を解決することはできません。コンストラクターを持つクラスは返されません。

例えば:

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」のトレースは含まれていません。これらの2つのクラスを取得するにはどうすればよいですか?

ID "Test"で解決すると、次のことに注意してください。

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

'Test'クラスを取得します。

私は何を間違っているのですか?

4

1 に答える 1

0

実際、私は古いバージョンのCastleWindsorを使用していました。最後のバージョン(3.1)では、これは機能します。

于 2012-08-09T12:42:04.017 に答える