я в настоящее время работают с MEF и сталкивается с некоторыми проблемамиКак загрузить из каталога библиотеки DLL с помощью MEF (Managed Extensibility Framework)
то, что я хочу, чтобы загрузить библиотеки 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() ;;
еще нет ответа :( – Mohsan