Mi chiedo come gestire un ViewModel
nel senso tradizionale, che include sia le proprietà che i metodi, e un altro "modello di vista" che è semplicemente solo le proprietà - forse il ViewModel restituirebbe un'entità di questa vista ", o qualcosa del genere.
Lasciami spiegare:
Modello di dominio:
public class Workout
{
public int Id { get; set; }
public string Name { get; set; }
public string SomethingElse { get; set; }
public List<Exercise> Exercises { get; set; }
public DateTime CreatedDate { get; set; }
}
Visualizza modello:
public class WorkoutHistoryViewModel : IWorkoutHistoryViewModel
{
private IWorkoutRepository workoutRepository;
public WorkoutHistoryViewModel(IWorkoutRepository workoutRepository)
{
this.workoutRepository = workoutRepository;
}
// Here I'd like to return a slimmed down entity, not the full entity
public IEnumerable<WorkoutHistoryViewEntity> GetExistingWorkouts()
{
return this.workoutRepository.GetList(); // some mapping logic
}
}
E forse la "entità di visualizzazione" desiderata sarebbe semplicemente:
public class WorkoutHistoryViewEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
Dovrò anche fare qualcosa di simile per, diciamo, un WorkoutDetailsViewModel
, che richiederà un diverso insieme di proprietà per il suo "modello di vista", come:
public class WorkoutDetailsViewEntity
{
public int Id { get; set; }
public string Name { get; set; }
public List<Exercise> Exercises { get; set; }
}
Quindi, suppongo che le domande siano:
- Sto facendo MVVM tutto sbagliato? Questo ViewModel dovrebbe avere anche le proprietà desiderate? Se è così, allora, quando faccio un
GetExistingWorkouts()
, dovrei davvero restituire unList<WorkoutHistoryViewModel>
? In tal caso, avrei un sacco di oggetti, tutti con repository e metodi, quando in realtà voglio solo i dati. - Se dovessi creare una terza classe, come
WorkoutHistoryViewEntity
, quali sono in genere chiamati (visto che ViewEntity non sembra proprio corretto).