Импорт всегда возвращает ноль, но ImportConstructor работает - PullRequest
2 голосов
/ 30 июня 2011

Я пытаюсь использовать MEF в своем приложении, но у меня проблема с импортом.

    [Import (typeof(IUserServices ))]
    public IUserServices UserService { get; private set; }

Это не работает, а UserService всегда имеет значение null.

Но использование ImportContstructor в том же классе прекрасно работает:

    [ImportingConstructor ]
    public MainWindowVM(
        IUIVisualizerService uiVisualizer,
        IViewAwareStatus viewAwareStatus,
        IMessageBoxService messageBoxService, 
        IManager mwManager,
        TagItemModel tagModel,
        ILibraryModel  documentModel,
        ILibraryServices libraryServices,
        ILogServices logServices ,
        IUserServices userServices)

Может кто-нибудь помочь мне в этом вопросе. Я уже часами провожу, но не нашел решения. Спасибо !!!

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Свойство будет установлено MEF только после полного выполнения конструктора. Когда вы проверяете, является ли свойство нулевым?

0 голосов
/ 30 июня 2011

Я использую ChinchV2 вместе с MefedMVVM для создания контейнера. Вот код, который обеспечивает экспорт:

[PartCreationPolicy(CreationPolicy.Shared)]
[Export (typeof(IUserServices ))]
public class TestUserServices:IUserServices 
{
    public void GetSettings(Action<HubSettings, Exception> callback)
    {
        var dPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase).Remove(0, 6);
        callback(new HubSettings {DataPath = dPath}, null);
    }
}
...