Мне было поручено взять частично разработанное крупногабаритное и сложное приложение UWP с использованием MVVM с помощью шаблона 10. Приложение должно использовать собственный API веб-сервисов, и его нужно использовать практически для каждой функции, начиная с с начальной страницы входа.
Итак, если мне нужно получить доступ к одному экземпляру API везде, как мне поступить правильно? Я справедливо использовал MVVM, но никогда не использовал Template10, и мне никогда не приходилось делить экземпляр объекта во всем приложении MVWM UWP.
Пока я могу думать о трех направлениях:
- Объявление и создание экземпляра API в Appl.xaml.cs и его глобальное использование
Создайте общедоступный класс Globals и создайте экземпляр как общедоступное статическое свойство:
c#
public class Globals
{
private static OurAPI _ourAPI;
public static OurAPI API
{
get { return _ourAPI; }
set { _ourAPI = value; }
}
}
Создайте API-интерфейс на странице входа в систему, а затем передайте его в качестве параметра между ViewModels, предположительно с помощью службы навигации.
Я думаю, что 1 или 2, скорее всего, не соответствуют MVVM и могут вызвать проблемы с модульным тестированием, так что, возможно, 3 - лучший вариант? Или есть другой, более правильный способ сделать это, чтобы придерживаться концепций Template10 / MVVM, а также иметь возможность его модульного тестирования?
РЕДАКТИРОВАТЬ: Извините за код, не форматирующий, окно редактирования форматирует это хорошо, но когда я сохраняю его, он возвращается к одному длинному предложению: - (