0

2 つのクラス A と B があり、B は A に依存します (コンストラクターが注入されます)。B はベース コンテナーに SingleInstance として登録され、ビルドされます。A は MultiTenantContainer に SingleInstance として登録され、tenantId が異なります。

質問 1: 意志

Resolve<B>()

B もテナント ID で変更する必要があることを認識していますか?

質問 2: 同じですが、A はマルチテナント コンテナー内で有効期間スコープとして登録されており、B は依存しています。

Func<Owned<A>>.

更新:閉鎖!

これは、私の初心者がセマンティクスを理解していないため、「私が本当に欲しかったのは...」のケースでした。具体的には、存在しなかったテナントの有効期間スコープ内のすべての解像度で構築/共有されたインスタンスが必要でした。いくつかのガイダンスを得て、issue #318 にパッチを提出し、変更セット 752 でトランクにプルされました。準備完了です! 上記の質問は次のようになります。

2 つのクラス A と B があり、B は A に依存します (コンストラクターが注入されます)。B はベース コンテナーにInstancePerTenantとして登録され、ビルドされます。A は MultiTenantContainer にInstancePerTenantとして登録され、tenantIdによって異なります...

両方の質問に対する答えは「はい」です。

Travis と Nick の助けとこの素晴らしいツールの維持に感謝します。

4

1 に答える 1

0

あなたの例を正しく理解していれば、答えは両方とも「いいえ」です。

Autofac は、存続期間の長いインスタンスが存続期間の短いインスタンスへの参照を取得するのを防ぎます。

あちこちで設計を再考することを意味するかもしれませんが、私の経験では、これによりより予測可能な動作が得られます.

お役に立てれば!

ニック

(ところで、特定のシナリオに関する情報が必要な場合は、説明されている具体的なコンポーネントを使用して別の質問を作成することを検討してください。)

于 2011-03-28T09:28:12.957 に答える