Доступ к настройкам пользовательских приложений в модуле WPF Prism 4 - PullRequest
4 голосов
/ 06 сентября 2011

Я разработал приложение Microsoft Prism 4.0 и изо всех сил пытаюсь понять, как сделать функциональность настройки пользовательских приложений доступной для модулей.

например. a Properties.Settings.Default.MyProperty.

Я могу определить простой класс, который заполняется через загрузчик (который имеет дескриптор свойств), и добавить его в модули, но если я хочу сохранить изменение свойства, мне нужно верить, что мне нужен дескриптор контекст Properties.Settings, который недоступен моим модулям (которые являются простыми библиотеками классов).

1 Ответ

4 голосов
/ 06 сентября 2011

Ваш сценарий кажется идеальной причиной для использования класса «Сервис». Создайте интерфейс и класс с именами IUserSettingsService и UserSettingsService, которые имеют информацию (или могут загружать и сохранять ее из того места, где она хранится).

Прочтите главу 3 файла справки Prism 4.0, Управление зависимостями между компонентами, Регистрация типов с помощью (Unity или MEF, в зависимости от того, что вы используете в качестве DI-контейнера).

Затем в вашей ViewModel, для которой нужны пользовательские настройки, найдите и используйте ваш сервис. В MEF это так же просто, как добавить свойство типа IUserSettingsService с атрибутом [Import] или использовать [ImportingConstructor] и иметь параметр типа IUserSettingsService. С Unity вы получаете доступ к сервису через контейнер. См. Главу 10 справочного файла Prism - Расширенные сценарии MVVM.

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

...