0

エンド ユーザー向けのレポートを生成するアプリケーションがあります。これらはDevExpress XtraReports. あるユーザーは特定のフィールドを含むレポートを何らかの形式で必要とし、別のユーザーは同じフィールドまたは複数のフィールドを別の形式で必要とする場合があります。次のようなことをする代わりに:

if(user == "")
   //print report for this user
   PrintReport(user);
else
  //print report for other user
  PrintReport(user)

MEFここで使用して、いくつかのIPrintReportインターフェイスを作成MEFし、メソッドのディレクトリにあるアセンブリに応じて、どのレポートを印刷するかを管理するのが良いと思いましたPrintReport。これは使用するのに適したシナリオMEFですか、それともこれを処理するためのより良い方法またはより簡単な方法はありますか?

4

1 に答える 1

0

これはあなたの問題を解決するために使用できる状況だと思いますが、MEF最初に自問する質問が 1 つあります。

  • メイン アプリケーションを再コンパイルせずにレポート形式を追加する必要がありますか?

MEFそうでなければ、この状況ではやり過ぎだと思います。これを使用してわかった主な利点MEFは、アプリケーションのモジュールをメイン アプリケーションとは独立して開発できることです。コンポーネントの 1 つの小さなバグを修正するために、アプリケーション全体を再公開する必要はありません。新しい .dll をフォルダーにドロップするだけで、アプリケーションがそれを使用し始めます。

上記の質問に「いいえ」と答えた場合、私はこれを使用MEFしません。代わりに、IPringReportあなたが言及したそのインターフェースを作成します。このインターフェイスを実装するすべてのクラスは、ユーザーが目的の形式を選択できるアプリケーション設定にリストできます。ユーザーが形式の選択に対処したくない場合は、単にそれを設定する設定ファイルを用意することができます。

于 2012-10-18T15:17:55.330 に答える