Приложение MEF WPF с отдельными сборками и средствами управления загрузкой - PullRequest
4 голосов
/ 17 января 2011

У меня есть расширения приложения UI в отдельных файлах DLL, к которым я подключаюсь через MEF. Мой вопрос: если у них есть диалог (пользовательский элемент управления WPF), должен ли я сделать диалог свойством расширения следующим образом:

public UserControl ExtDialog { get; set; }

или я должен загрузить их в пачку Ури?

public string ExtDialogUri { get; set; }

Я склоняюсь к пакету Ури, но не уверен, сработает ли это на самом деле. Какой способ является более рекомендуемым ?

ПРИМЕЧАНИЕ. К этим диалогам можно перейти с помощью NavigationService.Navigate (); способ.

1 Ответ

4 голосов
/ 18 января 2011

Я бы не использовал ни один из вариантов.Дело в том, что обоим методам не хватает гибкости в отношении времени создания диалога.Если используется первый метод, то диалог будет создаваться всегда, независимо от того, нужен он или нет.С пакетом URL проблема заключается в том, что расширения не будут контролировать, как создаются экземпляры диалогового окна.Что если элемент управления необходимо инициализировать после создания (необходимо создать модель представления и т. Д.)?

На мой взгляд, лучше выставить фабрику, которая будет использоваться для создания диалога:

public IExtDialogFactory ExtDialogFactory { get; set; }

public interface IExtDialogFactory
{
    UserControl CreateDialog(); 
}
...