2010-10-20 106 views
2

我正在學習MEF,並在理解它時遇到一些問題。我用MainWindow和一些裝入目錄的程序集有小項目。 其中一個程序集需要顯示來自其他程序集的視圖,一旦在開始時和之後,如果我單擊該按鈕。 下面是這種觀點的頭部:MEF - 顯示從其他視圖查看

[Export("OperatingPlugin", typeof(UserControl))]  
[ExportMetadata("Name", "EDIFACT Viewer")] 
[ExportMetadata("Dock", "main")] 
[ExportMetadata("Hidden",true)] 
[ExportMetadata("Icon","editedi.xaml")] 
public partial class EdiView : UserControl 
{ 
    //[Import("PluginSelectFile", typeof(UserControl))] 
    //public Lazy<UserControl> SelectFile { get; set; } 

當視圖負載,我要顯示另一視圖(在單獨的組件),其選擇一個文件。 我可以在app.xaml.cs的目錄中看到所有視圖(也是PluginSelectFile),但是在上述註釋被移除之後,此組件(EDIFACT Viewer)不再顯示。 我在哪裏失蹤?

回答

0

PluginSelectFile最有可能在取消註釋時與導入不匹配,或者存在多個匹配的導出,這兩者都會導致OperatingPlugin導出被拒絕。

查看我的博客文章How to Debug and Diagnose MEF Failures瞭解爲什麼會發生這種情況以及如何解決問題。

+0

是的,導入和導出名稱不匹配 - 在調試過程中找到。 – Gabriel 2010-10-21 10:29:23