これをどのように説明するのかよく分かりませんが、ここにはあります。ユニティとライフタイムの管理
私は4つのクラスを持っています:A、B、C、D。
は、AはB、C、D
を注射されたCはD
Aが解決あたりであると注入されます。
Bはシングルトンです。
CとDわかりません。
IはA及びCは、Iが容器から解決するので、各時間Dの同じインスタンスを使用する場合、Dは
を一度作成し、AとCの両方に注入しなければならない最も簡単な方法は、になるであろうmakeはAをUnityを使わずにDからCに渡すだけです。しかし、Unityでこれを行う方法はありますか?私はContainerControlledLifetimeManagerとPerResolveLifetimeManagerを使用していて、子コンテナは使用していません。これは役に立つと思われます。私はこれで少し演奏しているが、それはかなり乱雑になる。それは簡単にできますか?
ありHTTPセッションのような明白な1ではありませんが、私はものを作ることができると思います。しかし、それは何ですか?どのオブジェクトにPerRequestLifetimeManagerを割り当てる必要がありますか?私がそれをDに割り当てるのは明らかですが、Bはそれがシングルトンなので新しいものを得られません。私はまたBを変えるべきですか?多くの依存関係が存在する大きなアプリケーションでは、どのタイプをPerRequestLifetimeManagerにするかを手動で決定するのが難しくなります。どのように動作するかについてもう少し詳しく教えてください。それは良いアイデアのようですが、私はそれを完全に理解していません。 – Karsten
私はDが1リクエストにつき解決すると考えていました。あなたのシナリオは、BがDへの参照を保持していることを示していません。そうした場合、BはDのインスタンスを1つしか持てません(Dもシングルトンでない限り)。あなたのシナリオは抽象的に解決するには複雑すぎるかもしれません。 A、B、C、Dの基本機能をいくつか指定しておけば、もっと良い光を放つことができるかもしれません。 –
ありがとうございます。この生涯マネージャを使用するタイプ/インスタンスを決定するにはどうすればよいですか?すべての登録にそれを使用しますか? – Karsten