2011-02-08 9 views
1

私は自分の生涯マネージャー(http要求ごとに)でいくつかのタイプを解決できるようにUnityを設定しました。今私は解決された型構造の新鮮なインスタンスを取得する必要がありますし、これらのインスタンスを保存し、後で再利用したくないResolve呼び出しこの特別なメソッドのために私は一時的な生涯マネージャが必要です。タイプを解決する際に設定されたライフタイムマネージャを変更することはできますか?

生涯のマネージャーが異なる最初のコピーがコピーされるので、2番目のコンテナの設定は避けたいです。どのようにタイプを解決するとき生涯マネージャの設定を無効にすることは可能ですか?

この質問は私がprevious questionに翻訳しました。私はそれを行うためのより良い方法を探しているからです。

編集:

私は、複数の名前の登録を作成することができます知っているが、それはちょうどので、変更生涯マネージャの再設定の大部分を作成する必要がwhould。

答えて

1

あなたが指摘したように、私たちは、異なる生涯設定を持つ2つの別々の登録を使用することができます。しかし、あなたはこの設定に満足していないようで、の時点での生涯を過ごしたいと思っています。

あなたの提案は、追加の有効期間をとり、そのような登録をコンテナにチェックする拡張メソッドを作成することです。存在しない場合は、それを登録し、必要なセットアップを返します。

正直言って、私はこのアプローチで問題がある、そのようなメソッドがフレームワークに存在していても。 IoCコンテナは依存関係の知識を削除します。しかし、この知識をクライアント/従属者に戻します。に対して IoCの原則を適用します。

1

特別な解決のために子コンテナを使用できます。気になるタイプの子コンテナに、新しい生涯マネージャ(TransientLifetimeManagerは必要なもののように聞こえる)を登録するだけです。それは他のすべてのために親から登録を取るので、登録の大規模なチャンクをやり直す必要はありません。

しかし、私はAliostadに同意します - このデザインは間違っていますが、あなたのしていることの詳細がなければ、本当に別の方法を提案することはできません。

+0

デザインが間違っています。問題は、作成された依存関係検索で、(ParameterOverridesによる)引数を1つのオブジェクトに渡すことです。一般的な処理の場合はOKです。しかし、この特別な初期化メソッドでは、他の引数を渡す必要があります。この引数を持つInstnaceは、残りの要求には使用できません。 –

関連する問題