Сервисный локатор WPF DI - PullRequest
       1

Сервисный локатор WPF DI

1 голос
/ 03 августа 2010

Поэтому я ищу некоторые пояснения, как можно было бы удалить указатель службы из моего приложения.

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

В настоящее время мои ViewModels получают IViewManagerService, внедряемый в них через конструктор. Эти ViewModels предоставляют ICommands, которые при вызове могут затем вызвать

viewManager.Transition("MyCoolView", somePrimaryKey);

Затем ViewManagerService использует локатор службы для поиска и создания нового представления с помощью ключа «MyCoolView». Причина использования ключевой строки заключается в том, что я могу отделить View от ViewModels. Я хотел бы сохранить ViewManagerService достаточно универсальным, чтобы я мог использовать его для других приложений, поэтому я не хочу, чтобы он зависел от конкретного интерфейса IAbstractFactory.

Какие-либо советы / предложения?

1 Ответ

1 голос
/ 03 августа 2010

Вы можете полностью избавиться от волшебных строк, используя шаблонизатор данных WPF . Лучший способ сделать это - использовать шаблон MVVM . Это ортогонально к DI, но отличный способ.

После того, как вы сделали этот переход, вы можете иметь архитектуру чистого DI, не полагаясь на антишаблон Service Locator.

...