私はウィンザーが初めてで、最も基本的なコンストラクター注入を実装しようとしています。どうやら API は最近のバージョンで大幅に変更されたため、現在のバージョンのドキュメントは、その方法を既に知っていると想定しているようで、古いバージョンのドキュメントは古くなっています。
私は単純なテストコンポーネントを持っています:
public class ConstructorInjectedComponent
{
public IMyComponent Component { get; set; }
public ConstructorInjectedComponent(IMyComponent component)
{
Component = component;
}
}
IMyComponent の簡単な実装があります。
public class AMyComponent : IMyComponent
{
public string Name { get; set; }
public AMyComponent()
{
Name = Guid.NewGuid().ToString("N");
}
}
そして、依存関係のインスタンス IMyComponent を含む ConstructorInjectedComponent のインスタンスを取得できるように、何らかの方法で自分の型を Windsor に登録したいと考えています。
AMyComponent を次のように登録しました。
_container.Register(Component.For(typeof(AMyComponent)));
次のように ConstructorInjectedComponent を登録しました。
_container.Register(Component.For(typeof(ConstructorInjectedComponent)));
そしてそれを解決しようとしました
_container.Resolve(typeof(ConstructorInjectedComponent));
しかし、それは「満たさなければならない依存関係があるため、コンポーネント ConstructorInjectedComponent を作成できません。
だから私は ConstructorInjectedComponent の依存関係の IDictionary を渡そうとします...そしてこれがドキュメントが私に失敗するところです。
その辞書を定義する方法がわかりません。それを説明するドキュメントが見つかりません。私はこれを試しました:
var d = new Dictionary<string, string>() {{"IMyComponent", "AMyComponent"}};
_container.Register(Component.For(typeof(ConstructorInjectedComponent))
.DependsOn(dependencies));
しかし、それは同じ「解決する必要がある依存関係があります」というエラーで失敗します。
私は何を間違っていますか?