StructureMap Динамическая загрузка плагина Dll's - PullRequest
5 голосов
/ 10 мая 2011

Проблема: загрузка плагинов в консольное приложение (в конце концов, служба Windows) и запуск кода в плагине

Исследования: документы StructureMap (конечно) Несколько потоков stackoverflow, один из которых самый близкий. Создание сканера плагинов с StructureMap

У меня есть 3 проекта: Консольное приложение (Драйвер) 2 Библиотеки классов

Консольное приложение

static void Main(string[] args)
{
    ObjectFactory.Initialize(cfg => cfg.Scan(scanner =>
    {
        scanner.AssembliesFromPath(@"PATH TO PLUGIN DIR");
        scanner.AddAllTypesOf<IPlugable>();
    }));

    var list = ObjectFactory.GetAllInstances<IPlugable>();

    foreach (var plug in list)
    {
        plug.Run();
    }
}

public interface IPlugable
{
    void Run();
}

Плагин_2

public interface IPlugable
{      
    void Run();
}

public class PlugIn2 : IPlugable
{    
    public void Run()
    {
        Console.WriteLine(this.GetType().Name + "fired!");
    }
}

public interface IPlugable
{     
    void Run();
}

public class PlugIn1 : IPlugable
{          
    public void Run()
    {
        Console.WriteLine(this.GetType().Name + "fired!");
    }
}

Вывод:

ObjectFactory.GetAllInstances<IPlugable>();

не возвращает объектов :( Желаемый вывод: 2 экземпляра объекта Plugin_1 & Plugin_2

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Похоже, вы используете 3 разных интерфейса.Все они называются «IPlugable», но находятся в разных пространствах имен, поэтому они не одинаковы.

1 голос
/ 12 мая 2011

Я думаю, что это ответ, с которым я иду .. Структура управляемой расширяемости http://msdn.microsoft.com/en-us/library/dd460648.aspx

Мне понравится, когда вы найдете новую структуру, чтобы найти точное решение вашей проблемы.

...