2010-11-29 9 views
2

私がしようとしているのは、MVCアプリケーションにコンポーネントを挿入し、コントローラからそれを利用することです。MEFとMVC - いくつかのポインタをお願いします:)

現在、私は実際のコントローラにMEFを使用しようとはしていませんが、コンポーネントをインポートしたいと思います。 MVCアプリケーションへのlogginコンポーネント。

これを行うのに最適な場所はどこですか?

現在、私はコントローラに直接、作成部品コードとILoggerプロパティを入れていますが、これは最良の方法ではないと感じます。アプリケーションでComposeを一度呼び出すだけでよいはずです。 これは、グローバルasaxファイルに作成する必要がありますか? もしそうなら、コントローラからILoggerのハンドルを取得するにはどうしたらいいですか? ILoggerをコンストラクタに挿入し、すべての標準コントローラを継承する「ベース」コントローラを用意する必要がありますか?

私はちょうど私のコードの構造でちょっと苦労しています。

Thx

+0

http://www.fidelitydesign.net/?p=259このブログの記事は役に立ちます。それはMVC3とMEFのすべてです。 – Buildstarted

+0

ありがとう...確かに、非常に役立ちます。 – SteveCl

+0

もこのことを忘れないでくださいhttp://www.fidelitydesign.net/?p=88 – Kuncevic

答えて

0

私はLog4Netを使用し、各コントローラにロガーを注入します。私はあなたが注射を使用するとき、その大ヒットとは思わない。 Ninjectを見てください。 MVC実装とロギングモジュールの両方を備えています。モジュールは一度グローバルにロードされた後、コントローラを注入します。基本的なDIですが、本当にもっと必要ですか?基本コントローラーを作成する場合でも、注入できるコントローラーごとにctorを作成する必要があります。

ロギングを使用してベースコントローラーを作成し、プロパティーインジェクションを使用することができます。私はこれをやったことはありませんが、すべてのコントローラが同じベースを使用していればうまく動作します。

+0

ロガーの場合、私はlog4netの静的カプセル化を使用します。すべてを記録するのが本当に簡単になります。また、同じリソースにアクセスしようとするロガーが増えてしまう危険はありません。 –

+0

私はNLogを使っています...本当に大きな違いがありません。 NinjectやWindsorは、私がやりたいことに対してMEFより優れた解決策かもしれないと思っています! @Paw ...あなたはglobal.asaxで静的カプセル化を作成しますか? – SteveCl

関連する問題