2011-05-10 90 views
5

問題:在DLL的StructureMap動態加載插件DLL的

研究 加載插件到一個控制檯應用程序(Windows服務最終)和運行代碼的插件: StructureMap文件(當然) 數計算器線程這一個是最接近的。 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(); 
} 

Plugin_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對象實例。

+0

顯示ObjectFactory.WhatDoIHave()的輸出, – 2011-05-10 19:26:28

回答

2

看起來你正在使用3個不同的接口。它們都被稱爲「IPlugable」,但它們駐留在不同的命名空間中,因此它們不一樣。