Silverlight 4, MEF, ошибки экспорта / импорта, Mefx не хочет работать - PullRequest
1 голос
/ 14 декабря 2010

Из-за разочарования и более чем трехдневного поиска этой проблемы ... У меня нет выбора, кроме как беспокоить вас, ребята, моим вопросом.

Я создаю приложение Silverlight. Я использую MEF. Когда я пытаюсь запустить свое приложение, я получаю следующую ошибку.

Вызов конструктора на тип 'IFG.Silverlight.Client.Views.MenuView' соответствует указанной привязке ограничения бросили исключение. [Линия: 25 позиция: 47]

и его внутреннее исключение следующее ...

Состав остается без изменений. изменения были отклонены из-за следующие ошибки: Композиция произвел единственную ошибку композиции. Основная причина приведена ниже. Просмотрите CompositionException.Errors недвижимость для более подробной информация.

1) Не найдено действительного экспорта, который соответствовать ограничению '((exportDefinition.ContractName == "MenuViewModel") и также (ExportDefinition.Metadata.ContainsKey ( "ExportTypeIdentity") А также "IFG.Silverlight.Client.ViewModel.MenuViewModel" .equals (exportDefinition.Metadata.get_Item ( "ExportTypeIdentity")))), неправильный экспорт мог быть отвергнуто.

Результат: невозможно установить импорт «IFG.Silverlight.Client.Views.MenuView.ViewModel (ContractName = "MenuViewModel") 'в часть 'IFG.Silverlight.Client.Views.MenuView. Элемент: IFG.Silverlight.Client.Views.MenuView.ViewModel (ContractName = "MenuViewModel") -> IFG.Silverlight.Client.Views.MenuView

Хорошо. мой код очень прост, так как это тестовое приложение.

У меня есть интерфейс IRetailModel

namespace IFG.Silverlight.Client.Common
{
    public interface IRetailModel
    { ............

тогда у меня есть класс, который реализует этот интерфейс

namespace IFG.Silverlight.Client.Model
{
    [Export(typeof(IRetailModel))]
    public class RetailModel : IRetailModel
    { .................

Тогда у меня есть моя ViewModel для просмотра

namespace IFG.Silverlight.Client.ViewModel
{
    [PartCreationPolicy(CreationPolicy.NonShared)]
    [Export(ViewModelTypes.MenuViewModel)]
    public class MenuViewModel : IFGViewModelBase
    {
 IRetailModel _model;

        [ImportingConstructor]
        public MenuViewModel(IRetailModel model)
        {

Ну, я обнаружил, что есть магический инструмент под названием MefX, который должен глубоко отладить ваш код и сообщает вам, что происходит ... Я не смог заставить это работать.

Я следовал инструкциям из этой статьи http://blogs.msdn.com/b/nblumhardt/archive/2009/09/24/debug-composition-from-within-visual-studio.aspx

Когда я пытаюсь запустить, он говорит

Ошибка: невозможно загрузить один или несколько запрошенные типы. Получить Свойство LoaderExceptions для более информация.

Затем вернулся в Google, и я нашел этот Visual MefX (тот же, но с графическим интерфейсом), и я могу загрузить .xap, но в основном он дает мне ту же информацию, что я получаю из Visual Studio. Я не могу найти проклятый [ПОТОМУ ЧТО] ...

Я действительно, ЧЕСТНО И ГЛУБИННО, расстроен этой ситуацией. Может кто-нибудь объяснить мне, где я не могу заставить MefX выполнять свою работу? Я знаю риск работы с этими Overnight Frameworks (отсутствие документации, глючность и т. Д.), Который кажется MEF, но Prism для меня не вариант (мне кажется, что покупать M16, чтобы убить муху, когда я могу использовать свой палец).

Спасибо

1 Ответ

2 голосов
/ 14 декабря 2010

Для дальнейшего использования к этому сообщению в блоге прилагается обновленная версия Visual Mefx: Как отлаживать и диагностировать сбои MEF . Он также является частью MEFContrib , хотя я не уверен, что в версии MEFContrib есть все изменения по сравнению с версией в блоге.

...