В моем приложении я использую Autofac в качестве DI-Framework и MEF для динамической загрузки сборок в контейнер. Я делал это несколько раз, но с помощью dotnet Framework, а не ядра.
Итак, у меня есть мой модуль:
[Export(typeof(IMyModule))]
public class ModueA : IMyModule
{
}
Атрибут Export
находится в пространстве имен System.Composition
ComposeableCatalog
зарегистрирован таким образом:
var catalog = GetComposableCatalog();
_configuratorContainerBuilder.RegisterComposablePartCatalog(catalog);
Во время отладки я вижу, что catalog
содержит свойство с именем LoadedFiles
, а этот массив содержит ModuleA
. Но свойство Parts
пусто.
Когда я собираю свой контейнер и пытаюсь разрешить все модули, которые реализуют IMyModule
, я получаю пустую коллекцию.
using(var container = _configuratorContainerBuilder.Build())
{
var modules = container.Resolve<IEnumerable<IMyModule>>();
}
Любойидеи, где я ошибаюсь?