0

我们的应用程序实现了 MVVM-WPF-Unity,我添加了一个功能,该功能将通过 MEF 在我们的应用程序中添加插件。因此我有一个插件管理器类和插件类。

在插件类模块中,我有这个。

namespace project.plugin
{
    [Export("Module",typeof(IModule))]
    public class Plugin : IModule
    {
       private readonly IRegionManager regionManager;

       private readonly IUnityContainer container;
    }

    [ImportingConstructor]         
    public Module(IRegionManager regionManager, IUnityContainer container)
    {
        this.regionManager = regionManager;
        this.container = container;
    }

    public void Initialize()
    {
        RegisterViewsAndServices();
    }
}

在我的插件管理器中,我这样做了:

[ImportMany] 
public IEnumerable<Lazy<IModule>> ImportedModules { get; set; }

AggregateCatalog moduleCatalog = new AggregateCatalog(
    new AssemblyCatalog(typeof(IModule).Assembly),
    new DirectoryCatalog("Plugins"));
CompositionContainer container = new CompositionContainer(moduleCatalog);
container.ComposeParts(this);



foreach (IModule iModule in ImportedModules)
{                    
    iModule.Initialize();
}

这里的问题是 ImportedModules 似乎是空的,尽管当我查看容器目录时,我可以看到插件类已被导出。请帮助请

4

0 回答 0