我正在使用 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 = {"合成产生了单个合成错误。下面提供了根本原因。查看 CompositionException.Errors 属性以获取更多详细信息。1) 调用线程必须是 STA,因为许多 UI 组件都需要这个。
这一切正常,然后我将插件更改为从 System.Windows.Window 类继承。这会导致失败吗?
继承人的插件头:
[Export(typeof(IGX3PluginInterface))]
public partial class MainWindow : GX3ClientPlugins.GX3ClientPlugin
其中 GX3ClientPlugin 扩展了 System.Windows.Window 类。
我很确定这是相关的,但不完全理解它:) http://mef.codeplex.com/discussions/81717
请让我知道您还需要什么其他信息?