Prism w / Mef Bootstrapping问题

时间:2010-12-08 21:13:45

标签: c# prism mef

我有一个正在运行的参考应用程序,现在已经破了,我无法弄清楚原因。给我这个问题的代码基本上是Prism的ModularityWithMef Quickstart示例的精确副本。除了添加模块发现逻辑之外,引导程序模块是Quickstart的精确副本。所以我不在此处。我在Shell的View代码中遇到的问题是QuickStart的Shell Codebehind中几乎完全相同的副本。代码是 -

namespace MvvmRefVer
{
    using System.ComponentModel;
    using System.ComponentModel.Composition;
    using System.Diagnostics;
    using System.Globalization;
    using System.Windows;

    using Microsoft.Practices.Prism.Logging;
    using Microsoft.Practices.Prism.Modularity;

    [Export]
    public partial class Shell : Window, IPartImportsSatisfiedNotification
    {
        [Import(AllowRecomposition = false)]
        private CallbackLogger logger;

        [Import(AllowRecomposition = false)]
        private IModuleManager moduleManager;

        public Shell()
        {
            this.InitializeComponent();
        }

        public void OnImportsSatisfied()
        {
        }
        private void WindowClosing(object sender, CancelEventArgs e)
        {
            Application.Current.Shutdown();
        }

        private void WindowLoaded(object sender, RoutedEventArgs e)
        {
            this.moduleManager.LoadModule("NavigationViewControlModule");
        }
    }

此函数Bootstrapper -

出现问题
    protected override DependencyObject CreateShell()
    {
        var d =  this.Container.GetExportedValue<Shell>();
        return d;
    }

当调用GetExportedValue并且存在moduleManager定义的[Import(AllowRecomposition = false)]时,函数调用将生成未定义的异常。如果我注释掉导入行,则Shell将正确加载,但不会初始化moduleManager。

我的问题是我没有足够的MEF经验来了解问题所在。在查看mef目录时,我可以看到已经加载了Prism Modularity库。

1 个答案:

答案 0 :(得分:0)

发布消息和未定义异常的堆栈跟踪会有所帮助。

有关解决MEF问题的一般帮助,请参阅How to Debug and Diagnose MEF Failures上的博文。