MEF を使用してプラグイン スタイルのアーキテクチャを作成していますが、合成例外が発生します。
詳細はこちら。
次のコードがあります。
AggregateCatalog catalog = new AggregateCatalog();
catalog.Catalogs.Add(new DirectoryCatalog(pluginDirectory));
CompositionContainer container = new CompositionContainer(catalog);
container.ComposeParts(this);
// add to dictionary
foreach (Lazy<IGX3PluginInterface> plugin in plugins)
{
if (!this.pluginDictionary.ContainsKey(plugin.Value.ModuleName))
{
}
}
行上:
if (!this.pluginDictionary.ContainsKey(plugin.Value.ModuleName))
次の例外がスローされます。
Exception = {"コンポジションで 1 つのコンポジション エラーが発生しました。根本的な原因を以下に示します。詳細については、CompositionException.Errors プロパティを確認してください。1) 多くの UI コンポーネントがこれを必要とするため、呼び出しスレッドは STA である必要があります。
これはすべて機能していたので、プラグインを System.Windows.Window クラスから継承するように変更しました。これが失敗の原因になっている可能性はありますか?
プラグインのヘッダーは次のとおりです。
[Export(typeof(IGX3PluginInterface))]
public partial class MainWindow : GX3ClientPlugins.GX3ClientPlugin
GX3ClientPlugin は System.Windows.Window クラスを拡張します。
これは関連性があると確信していますが、完全には理解していません:) http://mef.codeplex.com/discussions/81717
他に必要な情報を教えてください。