Проблема с импортом в MEF MVVM Silverlight 4 - PullRequest
1 голос
/ 21 июня 2011

Я использую MEF, MVVM и Silverlight4, ниже указан мой код

Main.cs:

using System;
using System.ComponentModel;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Diagnostics;
using System.ServiceModel.DomainServices.Client.ApplicationServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
 public partial class Main : UserControl
    {
        public Main()
        {
            InitializeComponent();
            // Satisfy the MEF imports for the class.
            if (!DesignerProperties.IsInDesignTool)
            {
                CompositionInitializer.SatisfyImports(this);
            }

        }


        /// <summary>
        /// Sets the datacontext to the viewmodel for this view
        /// </summary>
        [Import(ViewModelTypes.MainViewModel)]
        public object ViewModel
        {
            set
            {
                this.DataContext = value;
            }
        }
    }

Viewmodel:

using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Windows.Input;
    [Export(ViewModelTypes.MainViewModel)]
    [PartCreationPolicy(CreationPolicy.NonShared)]
    public class MainViewModel : ViewModelBase
    {
        [ImportingConstructor]
        public MainViewModel(IAuthenticationModel authModel, IprospectManagementModel managementModel)
        {
            this.authenticationModel = authModel;
            this.managementModel = managementModel;
        }

        /// <summary>
        /// The authentication model.
        /// </summary>
        private IAuthenticationModel authenticationModel;

        /// <summary>
        /// The Iprospect management model.
        /// </summary>
        private IprospectManagementModel managementModel;

    }

Ниже приведена ошибкаЯ получаю, Пожалуйста, помогите мне проследить то же самое.

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

1) Не найдено допустимых экспортов, соответствующих ограничению '(exportDefinition.ContractName == "MainViewModel")', недопустимый экспорт может быть отклонен.

В результате:

Cannot set import 'IProspectCommonApp.Client.Main.ViewModel (ContractName="MainViewModel")' on part 'IProspectCommonApp.Client.Main'.
Element: IProspectCommonApp.Client.Main.ViewModel (ContractName="MainViewModel") -->  IProspectCommonApp.Client.Main

1 Ответ

1 голос
/ 21 июня 2011

Вероятно, сбой, потому что не экспортируются IAuthenticationModel и / или IprospectManagementModel. MainViewModel импортирует их через ImportingConstructor, поэтому его нельзя создать, если они не были экспортированы.

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

...