簡體   English   中英

Unity InjectionFactory無法運行

[英]Unity InjectionFactory Doesn't Run

摘要:似乎沒有針對類型映射運行InjectionFactory。 我想知道為什么以及如何解決問題。

一開始,我嘗試注冊界面

Container.RegisterType<ILogger>(new InjectionFactory((c, t, n) => {
                return LogManager.GetLogger(n);
            }));

並使用服務定位器解決

ServiceLocator.GetInstance<ILogger>("Operation Manager");

這導致

The current type, NLog.ILogger, is an interface and cannot be constructed. Are you missing a type mapping?

經過一番修補,我決定嘗試其他方法,並使用具體類型注冊了服務

Container.RegisterType<Logger>(new InjectionFactory((c, t, n) => {
                    return LogManager.GetLogger(n);
                }));

並將分辨率方法更改為

public OperationService([Dependency("Operation Service")]Logger logger)

這將導致以下錯誤:

 The type Logger does not have an accessible constructor.

我能想到的唯一原因是,實際上沒有調用我通過InjectionFactory傳遞的函數來解析該對象。

這是因為您注冊了沒有名稱的類型,並且試圖通過名稱解析它。 Unity尋找(ILogger, "Operation Manager") ,但找不到任何注冊。 沒有名稱的注冊永遠不會被視為合格的候選人,因此不會調用InjectionFactory

據我所知,沒有內置的方法可以實現您想要的目標。 使用自定義擴展名可能會實現,但是到目前為止,我的嘗試均未成功。

暫無
暫無

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

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