簡體   English   中英

Autofac無法解析注冊的類型

[英]Autofac not resolving registered types

我登記我的組件/服務如圖所示在這里 ,我也實現類,如下圖所示。 當我打電話給Reload時,它說沒有注冊,我知道是的。 有任何想法嗎?

public interface ITypeReloader 
{ 
    PluginBase Reload(Type type); 
} 

public class TypeReloader 
{ 
    IComponentContext _container; 
    public TypeReloader(IComponentContext container) 
    { 
        _container = container; 
    } 

    public PluginBase Reload(Type type) 
    { 
        (PluginBase)_container.Resolve(type);  //Not registered error
    } 
}

鏈接到的答案使用AppDomain.CurrentDomain.GetAssemblies()獲取當前加載的程序集,然后在其中注冊任何從PluginBase派生的類型。

但是,程序集僅在首次需要時才加載到AppDomain中。 我敢打賭,您感興趣的類型駐留在進行注冊時尚未加載的程序集中 您可以通過查看AppDomain.CurrentDomain.GetAssemblies()的結果進行檢查:它是否缺少您期望的所有程序集?

解決此問題的最簡單方法是使用AutoFac MEF集成和MEF的DirectoryCatalog。 DirectoryCatalog正是針對這種情況而設計的。

編輯 :再PluginBase ,問題是您注冊為PluginBase ,然后嘗試將其解析為某些子類型。 對於您要在此處實現的目標,可能需要注冊.AsSelf()而不是.As<PluginBase>()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM