Die Bestseller -Probe in MVVMCross behandelt Fehler mit zwei primären Techniken:
1. BaseViewModel -Klassen für die gemeinsame Fehlerbehandlung: Das Bestsellers -Beispiel verwendet eine "BaseViewModel" -Klasse, um gemeinsam genutzten Code, einschließlich Fehlerbehandlungsmechanismen, zu verkörpern. Dieser Ansatz ermöglicht eine zentralisierte Verwaltung der häufigen Fehlerbehandlungslogik in verschiedenen Ansichtsmodellen. Beispielsweise wird die Methode "GeneralaSyncload" im "BaseViewModel" definiert und von verschiedenen Ansichtsmodellen verwendet, um Daten asynchron zu laden. Diese Methode kann Fehlerbehandlungslogik enthalten, die über die Anwendung geteilt wird.
2. Fehler-Router auf App-Level: Das Beispiel verwendet auch einen "Fehler-Router" auf App-Level-Ebene, um zu verwalten, wie Fehler von Ansichtsmodellen an die Benutzeroberfläche ausgegeben werden. Dies beinhaltet die Verwendung eines injizierten Objekts, typischerweise ein `iErorreporter", das während der App -Konstruktion als Singleton initialisiert wird. Jedes plattformspezifische UI-Projekt abonniert Ereignisse aus diesem Singleton mithilfe einer "iErorSource" -Schobton. Dieses Setup ermöglicht plattformspezifische Fehleranzeigemechanismen wie UialertViews auf iOS oder Toast auf Android, sodass jeder Plattform Fehler auf eine Weise behandeln kann, die in ihrer Umgebung nativ ist.
In der Praxis, wenn ein Fehler während eines asynchronen Vorgangs auftritt, z. B. Daten aus einem Webdienst, wird der Fehler unter Verwendung des `iErorrePorters gemeldet. Auf diese Weise kann die Anwendung benutzerfreundliche Fehlermeldungen anzeigen oder alternative Aktionen wie das Wiederieren des Vorgangs oder das Laden von Offline-Daten ergreifen.
Wenn beispielsweise ein `categoryListViewModel` beim Laden von Kategorien auf einen Fehler auftritt, kann er die Methode" GeneralaSyncload "aus der" BaseViewModel "verwenden, um den Fehler zu verarbeiten. Der Fehler wird dann über den `iErorReporter" gemeldet, der die entsprechende UI -Benachrichtigung basierend auf der Plattform auslöst.
Dieser Ansatz stellt sicher, dass die Fehlerbehandlung sowohl zentralisiert als auch flexibel ist und eine einfache Anpassung an verschiedene Plattformen und Szenarien innerhalb des MVVMCross -Frameworks ermöglicht.
Zitate:[1] http://slodge.blogspot.com/2012/05/one-pattern-for-error-handling-in.html
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvmcross-framework/
[3] https://asktom.oracle.com/ords/f?p=100%3A11%3A%3A%3A%3A%3AP11_Question_id%3A142998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-the-suggested-way-t-handle-pectionsduring-in-a-mvmcross-anapplication
[5] https://github.com/mvvmcross/mvmcross-samples/blob/master/oldsamples/bestsellers/bestsellers.touch/appdelegate.cs
[6] https://discourse.getdbt.com/t/how-talle-test-failures/3824
[7] https://www.telerik.com/blogs/blazor-best-practices-handling-errors
[8] https://stackoverflow.com/questions/15697523/running-sample-projects-in-mvmcross-v3-hot-tuna
[9] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx