MEF для загрузки DLL один за другим - PullRequest
3 голосов
/ 24 ноября 2010

Я пытаюсь использовать MEF для загрузки DLL, когда это необходимо, однако информация в прочитанных мною руководствах оказалась не самой полезной.

Этот сайт дает немного кода (показан ниже), но на самом деле ничего не объясняет.

private void LoadPlugins() {
  var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
  var container = new CompositionContainer(catalog);
  var batch = new CompositionBatch();
  batch.AddPart(this);
  container.Compose(batch);
}

В основном у меня есть интерфейс с методом Run, и я реализую этот интерфейс с несколькими библиотеками DLL. Я хочу иметь возможность сделать что-то подобное (псевдокод)

bob = LoadDll(dllPath);
bob.Run();

Есть ли способ указать тип "bob" или он будет универсальным? Если кто-то может помочь, я буду очень признателен!

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010
1 голос
/ 24 ноября 2010

То, что вы хотите, может быть достигнуто с помощью MEF, но оно довольно продвинуто. Вам нужно либо создать кэшированный каталог (см. Пример на нашем сайте Codeplex), либо использовать другое средство чтения метаданных, например CCI.

Из коробки MEF загрузит сборки для отражения на них (ищет атрибуты mef).

...