ファクトリから引数を渡したい次のようなコンストラクタがあります。
public Event(IRegisteredType registeredEarly, IPassNow passNowByInterface,
DateTimeOffset local, DateTimeOffset world)
{
// ...
}
私はこのアプローチを試みましたが、うまくいきませんでした。ローカル値とワールド値の両方が同じで、一方が他方を上書きしたためです。
public Event CreateEvent(IPassNow passNow, DateTimeOffset local, DateTimeOffset world)
{
var args = new Arguments { { typeof(IPassNow), passNow } };
args.InsertTypedCollection(new object[] { local, world });
return _container.Resolve<Event>(args);
}
- registeredEarly は自動的に解決され、コンポジション ルートに登録され、機能します。
- passNowByInterface は解決時に渡す必要がありますが、これはインターフェイスであるため、インターフェイスの種類を指定する必要があります。そうしないと、Castle Windsor が引数の具象型を使用しようとするため、再び機能します - Castle でジェネリック引数を渡すのに失敗するを参照してください。ウィンザー
- local と world も解決時に渡す必要がありますが、どちらも同じ具象型であり、変数名に依存できないことに注意してください - Castle Windsor の同じ型の解決時の引数を参照してください
- 最後のものを残りのものと一緒に動作させることはできませんか?