2010-10-20 72 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