必要なものの非常に単純な例を説明しましょう。MEF を使用する VS ソリューションがあり、次の広範なプロジェクトとクラスの構造があるとします。
- サーバー (プロジェクト)
- Server.cs (
Mainアプリを起動するためのメソッドが含まれています。)
- Server.cs (
- 共有 (プロジェクト)
- \契約
- ILogger.cs
- ISettings.cs
- \契約
- 設定 (プロジェクト)
- MySettings.cs (ISettings を実装するクラス)
- ロガー (プロジェクト
- MyLogger.cs (ILogger を実装するクラス)
与えられた...
- 上記のプロジェクトはすべて Shared プロジェクトを参照しています。
- サーバーは開始アプリケーションであり、すべてのカタログをアプリケーション コンテナーに初期化します。
...アプリケーションを起動し、アプリケーション内からシングルトンMySettingsを初期化できます。ここまでは順調ですね。MyLoggerServer
ここでMyLogger、出力ディレクトリの設定ファイルにアクセスする必要があるとします。ディレクトリの場所の値はMySettingsオブジェクトに格納され、 で初期化さServer.csれCompositonContainerます。
私は MEF を使用しているので、Settingsプロジェクト内でプロジェクトを参照する必要はありませんLogger。代わりに、MEF を使用して、アプリケーションの開始時に初期化され、サーバー内に存在する現在のアプリケーションISettingsシングルトンを取得したいと考え ています。ServerCompositionContainer
MEF を使用MySettingsして内部からシングルトンに適切にアクセスするにはどうすればよいですか?MyLogger