我有一个正在运行的参考应用程序,现在已经破了,我无法弄清楚原因。给我这个问题的代码基本上是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库。
答案 0 :(得分:0)
发布消息和未定义异常的堆栈跟踪会有所帮助。
有关解决MEF问题的一般帮助,请参阅How to Debug and Diagnose MEF Failures上的博文。