2011-08-03 17 views
0

私はこのクラスを使用して、DLLの名前を持つ文字列に応じて異なるDLLからオブジェクトのインスタンスを取得します。StructureMapを使用して同時に2つの異なるコンポーネントを実行時に同時に入力

public class PluginFactory 
{ 
private static volatile PluginFactory Factory; 

private static object syncRoot = new Object(); 

private PluginFactory() 
{ 
} 
public static PluginFactory Instance 
{ 
    get 
    { 
     if (Factory == null) 
     { 
      lock (syncRoot) 
      { 
       if (Factory == null) 
       { 
        Factory = new PluginFactory(); 
       } 
      } 
     } 
     return Factory; 
    } 
} 
public IPlugableInterface GetPlugin(string assemblyName) 
{ 
    ObjectFactory.Initialize(x => x.AddRegistry(new PluginRegistery(assemblyName))); 
    _prog = ObjectFactory.GetInstance<PluginProgrammer>(); 
    return _prog.Plugin; 
} 

PluginProgrammer _prog; 
[Pluggable("Default")] 
[PluginFamily("Default")] 
internal class PluginProgrammer 
{ 
    public readonly IPlugableInterface Plugin; 
    public PluginProgrammer(IPlugableInterface Plugin) 
    { 
     this.Plugin = Plugin; 
    } 
} 

internal class PluginRegistery : Registry 
{ 
    public PluginRegistery(string assembly) 
    { 
     Scan(
     scanner => 
     { 
      scanner.AssembliesFromApplicationBaseDirectory(x => x.ManifestModule.Name == assembly); 
      scanner.AddAllTypesOf<IPlugableInterface>(); 
     }); 
    } 
} 
} 

これは、最初の呼び出しのために正常に動作し、それが、私は違うのAssemblyNameそれdoesntの仕事とdoesntのとそれを呼び出す秒の時間をのAssemblyNameとしてその名前を持つDLLに注入し、そのオブジェクトを返しますオブジェクトを返すと面白いのは、もし私がデバッグし、ブレークポイントなしで実行すれば何も起こらないということです。

_prog = ObjectFactory.GetInstance<PluginProgrammer>(); 

これはどういう意味ですか?どのように私はこれを修正するか、または私が欲しいものを達成するためにそれを再設計することができますか?

答えて

関連する問題