Sto lavorando su un'applicazione Xamarin (Mvvm usando Prism), sto anche sfruttando OData per la comunicazione tra il mio back-end e l'applicazione mobile.
La struttura della mia app per dispositivi mobili è la seguente:
- Visualizza
- Visualizza il modello
- Livello di servizio
- Proxy OData per restituire i modelli
È un po 'strano con OData perché i miei modelli di dominio / DTO sono gli stessi e finisco per esporli direttamente al livello View, tuttavia io sono l'unico sviluppatore e l'astrazione più complessa sarebbe ingombrante da mantenere ... Almeno quello è stato il mio pensiero fino a questo punto. Ora mi trovo di fronte a una situazione in cui devo eseguire una logica aggiuntiva sull'oggetto Model prima del livello di presentazione:
L'esempio del modello ( MyComplexModel
) di OData assomiglia a questo:
public class MyComplexModel
{
public int Id { get; set; }
public string Name { get; set; }
public List<MyComplexModelFeedback> Feedback { get; set; }
}
public class MyComplexModelFeedback
{
public int Id { get; set;}
public int PersonId { get; set; }
public int Vote { get; set; }
}
Solitamente vorrei solo Bind
della vista direttamente a MyComplexModel
e presentarlo tramite un ListView
, ma ora voglio appiattirlo / sommare la proprietà Vote
prima di presentarti. È appropriato mappare questo oggetto a un nuovo oggetto direttamente nel mio ViewModel?
Oppure ho pensato di aggiungere un modello di facciata per i miei modelli di visualizzazione da usare / esporre, che mapperei nel livello di servizio, tuttavia il mio codice base aumenterebbe del > 30% ... C'è un modo semplice per aggirare questo problema o questo è un sintomo di un problema di progettazione più grande?