Ho scritto un'app con il pattern MVP Passive View.
La mia soluzione ha quattro diversi progetti. Un MyApp.Core contenente tutti i tipi di logica aziendale, un MyApp.Forms contenente materiale correlato a WinForms (UI), un MyApp.Tests contiene tutti i test di unità e integrazione e un MyA0p.Xamarin contenente materiale correlato a XamarinForms (UI).
Ovviamente la mia idea era di rendere il più possibile riutilizzabile del codice. Dal momento che utilizzo il modello passivo di MVP, sono riuscito a farlo abbastanza bene. Tutto il mio App.Core deve essere costruito sono alcune implementazioni delle interfacce di visualizzazione (e alcune altre cose che non sono importanti qui). Quindi il mio Costruttore è simile a Core.MyApp (vista IFirstView, IOtherView altro, ...). Pensavo che questo approccio fosse fantastico. In teoria, la mia app non ha bisogno di sapere se si tratta di un'applicazione Xamarin, Console o WinForms, tutto ciò di cui ha bisogno sono le implementazioni di alcune interfacce di visualizzazione. In questo modo sono stato persino in grado di testare una navigazione di implementazione all'interno del mio progetto principale, vale a dire quale interfaccia di visualizzazione è mostrata e un primo comportamento di stack di visualizzazione per primo. Quindi la mia applicazione WinForms è davvero stupida. Ha solo un modulo radice e due controlli utente che implementano IFirstView e IOtherView e il gioco è fatto. Cool.
Ora ho iniziato a usare Xamarin. L'inizio è stato simile. Ho impostato tutta la vista abbastanza velocemente e sta funzionando al volo. Ma ora ci sono così tante piccole cose dell'interfaccia utente che non sembrano così grandi e devono essere toccate. Tutte queste cose sono legate a Xamarin e talvolta è difficile risolverlo in Core o addirittura risolverlo in Xamarin.Forms da quando Xamarin funzionalmente è stato spostato in Core.
Quindi ora mi chiedo se il mio approccio fosse corretto? Ho inserito troppo nel mio progetto Core? È meglio collocare l'orchestrazione dell'interfaccia utente nei progetti dell'interfaccia utente?
Grazie in anticipo per eventuali suggerimenti!