Bestsellers -provet i MVVMCross hanterar fel med två primära tekniker:
1. BaseViewModel -klasser för delad felhantering: Bestsellers -provet använder en klass "BaseViewModel" för att kapsla in delad kod, inklusive felhanteringsmekanismer. Detta tillvägagångssätt möjliggör centraliserad hantering av vanlig felhanteringslogik över olika visningsmodeller. Till exempel definieras metoden "GeneralAsynCload" i "BaseViewModel" och används av olika visningsmodeller för att ladda data asynkront. Denna metod kan inkludera felhanteringslogik som delas över applikationen.
2. Felrouter på appnivå: Provet använder också en "felrouter" på appnivå för att hantera hur fel sprids från visningsmodeller till användargränssnittet. Detta handlar om att använda ett injicerat objekt, vanligtvis en "ierrorreporter", som initialiseras som en singleton under appkonstruktion. Varje plattformsspecifikt UI-projekt prenumererar på händelser från denna singleton med ett "ierrorsource" -gränssnitt. Denna installation möjliggör plattformsspecifika feldisplaymekanismer, såsom UialertViews på iOS eller toasts på Android, vilket gör att varje plattform kan hantera fel på ett sätt som är infödda i dess miljö.
I praktiken, när ett fel uppstår under en asynkron operation, såsom att ladda data från en webbtjänst, fångas och rapporteras felet med att använda "ierrorreportören". Detta gör det möjligt för applikationen att visa användarvänliga felmeddelanden eller vidta alternativa åtgärder som att försöka igen operationen eller ladda offline-data.
Till exempel, om en "CategoryListViewModel" möter ett fel när du laddar kategorier, kan den använda metoden "GeneralAsynCload" från "BaseViewModel" för att hantera felet. Felet rapporteras sedan via "ierrorReporter", som utlöser lämplig UI -anmälan baserad på plattformen.
Detta tillvägagångssätt säkerställer att felhantering är både centraliserad och flexibel, vilket möjliggör enkel anpassning till olika plattformar och scenarier inom MVVMCross -ramverket.
Citeringar:[1] http://slodge.blogspot.com/2012/05/one-pattern-for-error-hantering-in.html
]
]
]
[5] https://github.com/mvvmcross/mvvmcross-samples/blob/master/oldsamples/bestsellers/bestsellers.touch/appdelegate.cs
]
[7] https://www.telerik.com/blogs/blazor-best-practices-hantering-errors
]
[9] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx