Извлечение DLL из каталога с помощью Windsor Castle

#c# #inversion-of-control #castle-windsor

#c# #инверсия контроля #castle-Виндзор

Вопрос:

В настоящее время у меня есть папка «PlugInFolder», куда я хочу скопировать свой пользовательский плагин в виде библиотеки DLL. Каждый подключаемый модуль реализует мой интерфейс «IPlugin».

Я хочу извлечь их во время выполнения с помощью Windsor Castle.

Я пробовал что-то подобное без результатов:

 CastleContainer.Instance
       .Install(
        FromAssembly.InDirectory(new AssemblyFilter("PlugInFolder"))
         );

      CastleContainer.Instance.Register(Component.For<IPlugIn>());


       IPlugIn[] plugIn= CastleContainer.Instance.ResolveAll<IPlugIn>();  
  

Я получаю эту ошибку:

 Type ImageEditorInterfaces.IPlugIn is abstract.
As such, it is not possible to instansiate it as implementation of service ImageEditorInterfaces.IPlugIn.
  

Ответ №1:

Попробуйте что-то вроде этого:

 container.Register(AllTypes
    .FromAssemblyInDirectory(new AssemblyFilter("PlugInFolder"))
    .BasedOn<IPlugIn>());