我想以與shown here類似的方式加載插件,但加載的程序集似乎不共享相同的上下文。通過結構映射加載程序集時的上下文
試圖解決問題,我只是建立一個包含兩個組件的小尖峯。一個控制檯應用程序和一個庫。控制檯應用程序包含IPlugin接口並且沒有對插件dll的引用。
我掃描使用自定義登記公約的插件目錄:
ObjectFactory.Initialize(x => x.Scan(s =>
{
s.AssembliesFromPath(@"..\Plugin");
s.With(new PluginScanner());
}));
public void Process(Type type, Registry registry)
{
if (!type.Name.StartsWith("P")) return;
var instance = ObjectFactory.GetInstance(type);
registry.For<IPlugin>().Add((IPlugin)instance);
}
其中thows無效轉換異常說「插件類型不能轉換成IPlugin」。
而且,如果我只是構造實例(其中的方式正常工作),並嘗試訪問的ObjectFactory在插件ObjectFactory.WhatDoIHave()顯示插件實例和主機實例甚至不共享相同的容器實例。
用MEF,Structuremap實驗並手動加載程序集,Assembly.Load(「Plugin」)顯示如果用Assembly.Load加載它工作正常。任何想法我可以如何解決這個與StructureMaps程序集掃描工作?