我剛在我的mef應用程序中追查到一個問題;問題是,我在IEnumerable<IFoo>
屬性中有[Import]
而不是[ImportMany]
。我開始想知道爲什麼。 MEF認爲注入目標是一個「集合」,可以確定需要集合而不是單個元素。至少Ninject以這種方式工作。爲什麼MEF有[ImportMany]而不只是[Import]
有沒有人知道爲什麼[ImportMany]
是必需的?我能想到的唯一原因是人們可能想要[Export(typeof(IEnumerable<IBar>)] public IEnumerable<Bar> { get; }
,但這真的是這種設計的原因嗎?我敢打賭,我不是唯一一個調試過這種錯誤的人。
感謝您的澄清。在我的情況下,惱人的是'compositionContainer.ComposeParts(this);'沒有拋出異常,而是我的ImportMany導入是其中一個依賴關係。只有提示是關於拒絕導出的日誌輸出。這當然是由設計,幸運的是我找到了mefx工具來診斷問題。如果對象圖很大,這種錯誤可能很難追蹤。 – Ahe 2011-12-21 12:19:00