2009-06-23 13 views
0

MVC Webアプリケーションのglobal.asaxファイルで実行時に設定情報を取得するUnityContainerがあります。ベストプラクティス - Asp.net MVCの階層間でUnityContainerを共有しますか?

また、このコンテナにアクセスする必要がある別のアセンブリでサービスを使用して、手動で解決を実行できるようにしました。

どのようにして2つを共有できますか?データアセンブリとMVCの間に参照を入れたくないのですが、データアセンブリがWebアプリケーションによって設定されたUnityContainerにアクセスできるようにしたいと思います。

この状況で他の人が何をしているのだろうかと思います。

答えて

0

私はStructureMap(同様のツール)を使用しており、一般的にソリューション内のプロジェクト間で自分の構成を共有しています。つまり、同じコンテキストで作業していない限り、同じオブジェクトを直接共有しているわけではありません。単純なアプリケーションでは、コントローラーからビジネスレイヤーへ、次にdalへの作業を実行するためにアセンブリをロードしています。実際には同じオブジェクトを使用しています。しかし、層を物理的に別々のレイヤー(ハードウェア)に配置する必要があるとすぐに、configも一緒に行くことができます。これはその時点での展開の問題になります。

+0

ただし、設定はありません。 私は設定ファイルを使用していたときにはうまくいきましたが、大規模なリファクタリングでは何度も何度も繰り返していましたが、XML-Hellからオプトアウトし、C#を使用してコンテナを配線しています。そこで、私が設定を共有していたところで、別の方法が必要になりました。 –

1

コンテナを登録したばかりで、依存関係が参照されている層全体にカスケードされるようにしました。

//すなわち

は、コンテナ

何とか 何とか 何とか

//

Container.RegisterInstance(コンテナ)自身を登録を設定します。

次に、それを必要とする人は、それを依存するプロパティまたはコンストラクタのパラメータとして持つだけです。

関連する問題