私はキャッスル・ウィンザーの初心者です。のは、私は以下のクラスがあるとしましょう:キャッスル・カスタスト・ライフ・スタイル/決議
public class LowLevelComponent
{
}
public class HighLevelComponent
{
readonly LowLevelComponent LowLevelComponent;
public HighLevelComponent(LowLevelComponent lowLevelComponent)
{
LowLevelComponent = lowLevelComponent;
}
}
public class ComponentBeingResolved
{
readonly LowLevelComponent LowLevelComponent;
readonly HighLevelComponent HighLevelComponent;
public ComponentBeingResolved(LowLevelComponent lowLevelComponent,
HighLevelComponent highLevelComponent)
{
LowLevelComponent = lowLevelComponent;
HighLevelComponent = highLevelComponent;
}
}
最も簡単な可能な方法で登録:
container.Register(Component.For<LowLevelComponent>());
container.Register(Component.For<HighLevelComponent>());
container.Register(Component.For<ComponentBeingResolved>());
私はすべての依存関係に私が呼ぶたびに使用LowLevelComponent
の同じインスタンスを取得したいのですが解決を解決してください。
ので、これらの呼び出し後:
var instance1 = container.Resolve<ComponentBeingResolved>();
var instance2 = container.Resolve<ComponentBeingResolved>();
次の主張は真実でなければなりません:
instance1.LowLevelComponent == instance1.HighLevelComponent.LowLevelComponent
instance1.LowLevelComponent != instance2.LowLevelComponent
instance1.HighLevelComponent != instance2.HighLevelComponent
私もこれは何ですか、あなたはすべて間違ってやっている」を取りますよ代わりに「」と答えてください:-)
[Castle Windsor DIコンテナと同じコンテキストで一時的な依存関係を再利用する方法](http://stackoverflow.com/questions/3986747/how-to-reuse-a-transient-dependency-in-same -context-with-castle-windsor-di-contai) –
この問題と同じ問題は、Germánのコンテキストライフスタイルをチェックしてください:http://blog.schuager.com/2010/11/contextual-lifestyle-reloaded.html –
@MauricioScheffer :私が必要とするものとまったく同じように見えます!しかし、手動でスコープを作成しないようにする方法はありますか?たとえば、型付きの工場ファシリティを使用している場合... –