2011-07-25 6 views
0

私のソリューションでは、いくつかのライブラリプロジェクトがあります。
私は、各ライブラリプロジェクトは、アプリケーションの起動時にいくつかの初期化を行います。アプリケーションの起動時にライブラリプロジェクトを初期化する

私は静的クラスと静的メソッドを使用してそれを行うことができますが、これが最善の解決策であるかどうかはわかりません。

これらのライブラリは、WebアプリケーションまたはWinアプリケーションで使用できます。

どうすればよいですか?

EDIT:
例: "トランスミッション" プロジェクトによって参照 "共通" プロジェクト。 "Common"は、登録を可能にするアラートの構造を定義します。アプリケーションの初期化では、 "Transmissions"に "Common"アラート構造のアラートを登録する必要があります。

+1

"...いくつかの初期化を行う"があまりにも大きすぎる - アプリケーションの開始時に何が起こるべきかの例を挙げてください。 – Filburt

+0

@Filburt:例を追加してください。 – Naor

答えて

3

Initializeメソッドを含むインターフェイスを作成することをお勧めします。アプリケーションが起動すると、MEFを使用してすべてのライブラリを取得し、Initializeメソッドを呼び出すことができます。これはさらに柔軟性があり、将来新しいコンポーネントを追加したり削除したりすることができます。

3

あなたが達成しようとしていることは正確にはわかりません。 staticsを使用すると、これらが初期化される保証された順序はありません。それは要件ではないかもしれません。

異なるオプションは、管理されたコードを含むアセンブリであると仮定して、各ライブラリに単純なクラスを実装することです。

アプリケーションの起動シーケンスでは、リフレクションを使用してすべてのライブラリを調べ、各ライブラリでその単純なクラスを見つけ、インスタンスを1つ作成して初期化コードを含むメソッドを呼び出すことができます。

各ライブラリの単純なクラスを識別する方法はいくつかあります。彼らが特定のインタフェースを実装したり、特定のクラスから派生させることが推奨されます。この場合、アプリケーションの起動シーケンスで使用できる明確なインターフェイスが必要です。

この方法では、初期化コードが実行される特定のシーケンスを実行するロジックを追加するオプションもあります。

+0

プロジェクトの初期化順序をどのように保証できますか?私はあなたを理解しているかどうかわからない、あなたの提案に例を挙げてもらえますか? – Naor

関連する問題