У меня есть справочное приложение, которое работало, а сейчас сломалось, и я не могу понять, почему.Код, который дает мне проблему, в основном является точной копией примера быстрого запуска Prism ModularityWithMef.Модуль начальной загрузки является точной копией быстрого запуска, за исключением добавления логики обнаружения моего модуля.Так что я не включаю это здесь.Проблема, с которой я сталкиваюсь в коде Shell View, является почти точной копией из CodeSthind от QuickStart.Код -
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 и присутствует [Import(AllowRecomposition = false)]
выше определения moduleManager, вызов функции будетсоздать неопределенное исключение.Если я закомментирую строку импорта, оболочка загрузится правильно, но без инициализации moduleManager.
Моя проблема в том, что у меня недостаточно опыта работы с MEF, чтобы понять, в чем проблема.Просматривая каталоги mef, я вижу, что библиотека Prism Modularity загружена.