Prism w / Mef Bootstrapping задача - PullRequest
       0

Prism w / Mef Bootstrapping задача

3 голосов
/ 09 декабря 2010

У меня есть справочное приложение, которое работало, а сейчас сломалось, и я не могу понять, почему.Код, который дает мне проблему, в основном является точной копией примера быстрого запуска 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 загружена.

1 Ответ

0 голосов
/ 09 декабря 2010

Поможет размещение сообщения и трассировки стека неопределенного исключения.

Для получения общей помощи в выяснении проблем MEF см. Мой пост в блоге на Как отлаживать и диагностировать сбои MEF .

...