8

IOC コンテナー (Windsor) にアクセスしたいクラスがありますが、静的な IWindsorContainer プロパティを保持したくありません。コンストラクターの依存関係。

Unity でこれを実行しましたが、Windsor コンテナーで同じことを試すと、IWindsorContainer がコンテナーに登録されていないことがわかります。

IWindsorContainer => WindsorContainer を登録することはできないと思います。これにより、コンテナがそれ自体の新しい (または別の) インスタンスを作成してクラスに渡し、そのインスタンスに他のすべての型が登録されなくなるためです。それ。また、コンテナーを構築し、その中のすべての型を登録し、それ自体のインスタンスを IWindsorContainer に対して登録する方法もわかりません。すべての登録メソッドは、サービスと実装の型のみを受け取ります。実際の具体的なインスタンスではありません。

4

3 に答える 3

8

通常、コンテナーをアプリケーション コンポーネントに挿入することは望ましくありません。

これらの質問を参照してください(この質問はそれらのほぼ複製です):

ところで:あなたIKernelは無料で注射を受け、登録することができIWindsorContainerます:

container.Register(Component.For<IWindsorContainer>().Instance(container));
于 2009-03-23T18:37:48.860 に答える
0

私は最近これをしたくなりました。オブジェクトの存続期間中にサービスの複数のインスタンスを作成できるようにしたかったのです。依存関係の必要性がより明確になるという点で、ファクトリを登録する方が良いでしょう。しかし、サービスごとにファクトリを作成するのは苦痛のように思えました。

私はこの記事のコードのようなものを使用することになりました:http://mikehadlow.blogspot.com/2010/01/10-advanced-windsor-tricks-1a-delegate.html。IServiceのインスタンスを作成する必要があるクラスがあるとします。この記事では、クラスがFuncに依存できるようにする手法について説明し、そのクラスに固有のファクトリを自動的に取得します。

于 2010-06-19T16:54:09.073 に答える