0
我有這個類用於從不同的DLL獲取對象的實例,具體取決於具有dll名稱的字符串。使用StructureMap在運行時同時注入兩個不同的組件
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的DLL,並返回一個對象,我第二次用不同的AssemblyName它不工作,犯規叫它返回一個對象,有趣的是它永遠不會通過這條線,如果我調試,如果我沒有斷點運行它沒有發生任何事情!
_prog = ObjectFactory.GetInstance<PluginProgrammer>();
任何想法爲什麼會發生這種情況?任何想法如何解決這個問題或重新設計它來實現我想要的?