Хорошо, если я отступлю назад, чтобы подумать о том, что делает модель представления; Я назначаю ему модель, а затем у меня есть вид, использующий команды или свойства привязки.
Итак, каждый ViewModel является экземпляром, специфичным для модели.
Также методы ViewModel обычно работают с экземпляром текущей модели. Это означает, что методы не являются изолированными логическими единицами. т.е.
interface IService
{
Foo Model;
Result DoSomethingWithModel();
}
имеет логику, зависящую от его собственного состояния экземпляра.
тогда как это чисто логическая служба:
interface IService
{
Result DoSomething(With me);
}
Хорошей практикой кода, на мой взгляд, было бы внедрение нового экземпляра ViewModel при каждом запросе, даже если у вас только один запрос.