我有一個有很多MEF的應用程序,它一直導入。在調試器中,如果找不到零件,我可以看到一個ImportCardinalityMismatchException被引發,告訴我到底是什麼缺少的導入。但隨後它被吞噬了,我是由MEF承擔的,並且最終會彈出一條日誌消息,告訴我關於一個不同的組件(可能間接地)依賴於失敗的組件。是否有可能在調試器之外獲得原始故障?我可以防止吞下ImportCardinalityMismatchException嗎?
1
A
回答
1
是的,在.NET 4.5中,您可以使用CompositionContainer constructor過載之一,它接受CompositionOptions枚舉。您需要將它傳遞給DisableSilentRejection
枚舉值。在.NET 4中
0
一種解決方案是使用上的參數[Import(AllowDefault = true)]
屬性進口構造,然後處理/登錄自己的失敗在構造函數體:
[ImportingConstructor]
public SomeView([Import(AllowDefault = true)] SomeViewModel context)
{
if (context == null)
{
LogManager.GetLogger("Composition").Error("No object found to satisfy import of 'SomeViewModel'");
throw new ArgumetnNullException ("SomeViewModel");
}
相關問題
- 1. 我可以防止鍵盤分裂嗎?
- 2. 我可以防止擴展HorizontalScrollView嗎?
- 3. 我可以防止MongoDB :: command()阻塞嗎?
- 4. gitolite可以防止分支刪除嗎?
- 5. 我可以停止IIS嗎?
- 6. 我可以防止Byte Buddy發出註釋的默認值嗎?
- 7. 我可以防止Django用戶登錄會話過期嗎?
- 8. 我可以防止NSDocument保存窗口位置嗎?
- 9. 我可以防止它的包裝引導溢出溢出嗎?
- 10. 我可以防止Firebase set()覆蓋現有數據嗎?
- 11. 我可以防止發生模糊事件嗎?
- 12. 我可以防止logback的DBAppender記錄特定的屬性嗎?
- 13. 我可以防止DotNetNuke css與其他框架衝突嗎?
- 14. 我可以防止TinyMCE setContent竊取焦點嗎?
- 15. 我可以防止客戶端使用Meteor設置Mongodb $嗎?
- 16. 如果Travis失敗,我可以防止git push嗎?
- 17. 我可以防止Facebook RSS源導致JavaScript語法錯誤嗎?
- 18. 我可以防止WPF中的窗口最大化嗎?
- 19. 我可以防止RestKit + CoreData重寫本地實體更改嗎?
- 20. 我可以防止將int typedef隱式轉換爲int嗎?
- 21. 我們可以防止/避免gps欺騙嗎?
- 22. 我可以防止`java.util.logging.LogManager`太快關閉嗎?
- 23. 我可以防止在AJAX調用後出現Flash消息嗎?
- 24. 我可以防止fork()返回到shell嗎?
- 25. 我可以防止SWF與htaccess盜鏈嗎?
- 26. 我可以防止發佈某個PHP後期值嗎?
- 27. 我可以防止Access中的記錄刪除嗎?
- 28. 我可以防止java拋出某些異常嗎?
- 29. 在某些情況下吞食SocketExceptions可以嗎?
- 30. 防止WebBrowser控件吞噬異常
好極了!不幸的是,我們仍然使用.Net 4.0 :( – Pete