【问题标题】:MEF - Showing View from other ViewMEF - 从其他视图显示视图
【发布时间】:2010-10-20 11:32:40
【问题描述】:

我正在学习 MEF,但在理解它时遇到了一些问题。我有一个带有 MainWindow 的小项目和一些加载到目录中的程序集。 如果我单击按钮,其中一个程序集需要显示来自其他程序集的视图,一次是开始,然后是稍后。 这是该视图的主要部分:

[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),但是在删除上面的 cmets 之后,这个程序集(EDIFACT Viewer)不再显示。 我哪里少了点什么?

【问题讨论】:

    标签: c# wpf mef


    【解决方案1】:

    很可能 PluginSelectFile 的导出在未注释时与导入不匹配,或者存在多个匹配的导出,这两种情况都会导致 OperatingPlugin 导出被拒绝。

    请参阅我在 How to Debug and Diagnose MEF Failures 上的博客文章,详细了解为什么会发生这种情况以及如何找出解决方法。

    【讨论】:

    • 是的,导入和导出名称不匹配 - 在调试期间发现。
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多