私の会社では、普遍的に使用できるシンプルなGUIフレームワークを開発しています。私はGUIフレームワークを起動したときに、どのプラグインをロードすべきか、それらのGUI要素をどこに配置するかなどを定義する設定ファイルを読み込ませたい。しかし、設定ファイルの読み方、およびいくつかの書き方は、プラグインを介して行う必要があります。そのため、このプラグインは最初にロードする必要があります。なぜなら、他のものをロードする前に、それらを識別するためにconfigファイルを読み出す必要があるからです。 var dirCatalog = new DirectoryCatalog(@"..\..\Extensions\","ProgramConfigManager*");
MEFで特定のプラグインのみを読み込むにはどうしたらいいですか?
しかし、私は、ファイル名に依存したくない:
私は、私はこのようなだけで定義されたDLLをロードできること、がわかりました。 、この後
[Import(typeof(ISAProgramConfigManagerContent))]
SAProgramConfigManagerContent PCM;
他のプラグインが、設定ファイル内のものだけが、この内にロードする必要があります:私の意図は、最初のインターフェイスISAProgramConfigManagerContent
とMEFプラグインをロードすることです
[ImportMany(typeof(IPlugin))]
List<IPlugin> Plugins;
されていますそこには、まず契約ファイルを処理する特別なPluginをロードし、タイプISAProgramConfigManagerContent
の1つを作成するだけです。
ありがとうございます。
は「管理プラグイン」のパスまたは名前で区別は私が行きたかったしていない、だけの方法でした。しかしGetExportはちょうど私が探していたものでした: 'Lazy p = ExtensionCandidates.GetExport ();' これで、正しいタイプのプラグインが得られました。ありがとうございました! –
ProperHacker