StructureMap动态加载插件DLL的内容

5
问题: 如何将插件加载到控制台应用程序(最终是Windows服务)中,并在插件DLL中运行代码。
研究: StructureMap文档(当然) 一些stackoverflow线程,其中这个是最接近的。 使用StructureMap创建插件扫描器 我有3个项目: 控制台应用程序(Driver) 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>();

返回没有对象:(

期望输出:Plugin_1和Plugin_2的2个对象实例。

提前致谢。


展示ObjectFactory.WhatDoIHave()的输出结果。 - Joshua Flanagan
2个回答

2

看起来您正在使用三个不同的接口。它们都被称为“IPlugable”,但驻留在不同的命名空间中,因此它们不是相同的。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接