Я использую довольно стандартный MEF для загрузки плагинов из каталога:
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(this.GetType().Assembly));
this.directoryCatalog = new DirectoryCatalog(pluginDirectory);
catalog.Catalogs.Add(directoryCatalog);
this.container = new CompositionContainer(catalog);
try
{
this.container.ComposeParts(this);
}
catch (CompositionException compositionException)
{
log.Error(compositionException);
throw;
}
catch (System.Reflection.ReflectionTypeLoadException rtle)
{
foreach (var e in rtle.LoaderExceptions)
log.Error(e);
}
В моем каталоге плагинов у меня есть плагины, а также другие DLL-файлы, которые не отображают IPlugin
интерфейс.
Я хочу получить список успешно загруженных IPlugin
реализаций, а также из каких файлов они возникли.
Я пытался просмотреть directoryCatalog.LoadedFiles
, но в нем просто перечислены файлы в каталоге, являются ли они настоящими плагинами или нет.
Я посмотрел определения экспорта, ноэто не дает мне понятия о исходном файле реализации.