Я сейчас работаю с MEF и сталкиваюсь с некоторыми проблемами
я хочу загрузить dll из каталога.
сначала я сканирую каталог и сохраняю две вещи в словаре
Имя свойства из соответствующей DLL (в виде строки)
и имя модуля (в виде строки)
вот код ScanDirectory ()
private void ScanPluginDirectory()
{
catalog = new AggregateCatalog();
catalog.Catalogs.Add(new DirectoryCatalog(@"..\..\plugin"));
container = new CompositionContainer(catalog);
batch = new CompositionBatch();
batch.AddPart(this);
container.Compose(batch);
pluginDictionary = new Dictionary<String, String>();
foreach (IFilter filter in filters)
{
Type t = filter.GetType();
pluginDictionary.Add(filter.Name, t.Module.Name);
}
}
и показать их имя в списке флажков. при выборе dll из флажка.
У меня есть оператор импорта как
[Import]
public IEnumerable<IFilter> filters { get; set; }
В настоящее время моя программа работает нормально. что я сделал, когда я проверяю плагин из списка флажков. он перемещает его в «загруженный» каталог и метод QueryPlugin () просматривает «загруженный» каталог для поиска плагинов.
при снятии флажка с плагина из списка флажков. я перемещаю его из "загруженного" каталога ...
Я хочу использовать метод batch.RemovePart (), чтобы избавиться от этого быстрого перемещения библиотек DLL из одного каталога в другой ....
ПРИМЕЧАНИЕ: я не добавляю плагины вручную в пакет, используя
batch.AddPart(new DemoFilter1());
вместо этого я использовал DirectoryCatalog () ;;