【问题标题】:StructureMap Dynamically loading Plugin Dll'sStructureMap 动态加载插件 Dll 的
【发布时间】:2011-08-22 16:38:18
【问题描述】:

问题: 将插件加载到控制台应用程序(最终是 Windows 服务)并在插件 dll 中运行代码

研究: StructureMap 文档(当然) 一些stackoverflow线程这是最接近的。 Creating plugin scanner with 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>();

不返回任何对象 :( 期望的输出: Plugin_1 & Plugin_2 的 2 个对象实例

提前致谢。

【问题讨论】:

  • 显示 ObjectFactory.WhatDoIHave() 的输出

标签: c# ioc-container structuremap


【解决方案1】:

看起来您正在使用 3 个不同的界面。它们都被称为“IPlugable”,但位于不同的命名空间中,因此它们并不相同。

【讨论】:

    【解决方案2】:

    我想这就是我想要的答案.. 托管可扩展性框架 http://msdn.microsoft.com/en-us/library/dd460648.aspx

    当您找到一个新框架来找到解决您的问题的确切解决方案时,一定会爱上它。

    【讨论】:

      猜你喜欢
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多