【发布时间】:2017-11-07 03:25:36
【问题描述】:
对于我的公司,我正在开发一个可以普遍使用的简单 GUI 框架。我希望 GUI 框架在启动时读取一个配置文件,该文件定义了应该加载哪些插件,应该在哪里安排它们的 GUI 元素等等。但是配置文件的读取以及一些写入应该通过插件进行。所以这就是为什么,这个插件应该先加载,因为在加载其他插件之前,它需要读取配置文件来识别它们。
我发现,我可以像这样加载一个已定义的 dll:
var dirCatalog = new DirectoryCatalog(@"..\..\Extensions\","ProgramConfigManager*");
但我不想依赖文件名。我的意图是首先使用接口ISAProgramConfigManagerContent 加载MEF 插件:
[Import(typeof(ISAProgramConfigManagerContent))]
SAProgramConfigManagerContent PCM;
在此之后,其他插件,但只是配置文件中的插件应该被加载到这个:
[ImportMany(typeof(IPlugin))]
List<IPlugin> Plugins;
有没有办法,首先通过过滤合约加载处理配置文件的特殊插件,然后编写ISAProgramConfigManagerContent 类型的插件?
提前致谢。
【问题讨论】: