Это интересный вопрос, и у него могут быть разные возможные ответы, но я выскажу свое мнение по этому вопросу.
Один из способов взглянуть на ViewModels - представить его как «модель» представления. Таким образом, вы можете быть уверены, что ваш взгляд будет очень скудным и дурацким, что идеально, поскольку их может быть сложно, если не невозможно, проверить. А поскольку виртуальные машины также являются слоем между представлением и моделью, это идеальное место для преобразования данных и типов. Преимущества включают тестируемость (как я уже сказал, трудно проверить логику преобразования в XML) и лучшую ремонтопригодность (если по какой-то причине вам придется изменить свое представление в будущем).
Еще один момент, который необходимо учитывать, это чистая архитектура. В чистой архитектуре зависимости находятся внутри. Модели верхнего уровня должны отображаться в и из модели нижнего уровня. В вашем случае Repository
уже выполнил свою задачу по предоставлению WeatherData
, его не должно волновать, как данные будут использоваться на верхнем уровне.
Таким образом, чтобы ответить на ваш вопрос, я думаю, что он должен быть в ViewModel
или, если вы хотите дополнительно развязать в случае множественных преобразований в разных представлениях, слой Converter
между слоем вашего домена и ViewModel.