次のクラス階層があります。
public class FirstProvider : IFirstProvider
{
public FirstProvider (string data, ISecondProvider provider)
{
...
}
}
public class SecondProvider : ISecondProvider
{
public SecondProvider (string data)
{
...
}
}
public interface IProviderFactory
{
T Create<T>(string data) where T : IProvider;
}
IFirstProvider と ISecondProvider はどちらも IProvider を実装しており、コンテナーに適切に登録されています。私がやろうとしているのは、次のように IProviderFactory から FirstProvider のインスタンスを取得することです。
public void DoSomething()
{
var provider = _providerFactory.Create<IFirstProvider>("my data");
}
この時点で、次の例外が発生します。
「依存関係がありません。
コンポーネント SecondProvider は文字列に依存しており、解決できませんでした。
依存関係がコンテナにサービスとして正しく登録されているか、インライン引数として提供されていることを確認してください。」
Windsor は、クラスのインスタンスを作成するために解決しなければならない依存関係のチェーンを通じて、ITypedFactory のパラメーターを渡さないように見えます。このデザインをサポートできる別の方法はありますか、それともデザインを再検討する必要がありますか?