V MVVMCrossu se při jednání s ověřením a serializací dat často objevují dva atributy: `vyžadované` a` jsonRequiredAttribute`. Tyto atributy slouží různým účelům a používají se v různých fázích životního cyklu aplikace.
Požadovaný atribut
Atribut „Požadovaný“ je součástí jmenného prostoru System.comPonentModel.DataAnnotations a používá se pro ověření modelu. Označuje, že vlastnost musí mít hodnotu; Jinak je model považován za neplatný. Tento atribut se obvykle používá po deserializaci, během fáze validace modelu. Například v jádru ASP.NET, pokud je vlastnost zdobena `[požadovaná]`, bude `modelState` neplatná, pokud tato vlastnost chybí nebo nulová během vázání modelu.
V MVVMCrossu, zatímco atribut `požadovaného` lze použít pro ověření, neinteraguje přímo s procesy serializace JSON nebo deserializací. Místo toho jde spíše o zajištění toho, aby byly určité vlastnosti naplněny před pokračováním v obchodní logice.
JsonRequiredAttribute
`JsonRequiredAttribute` je specifická pro serializaci a deserializaci JSON. Používá se k označení, že vlastnost musí být přítomna v datech JSON během deserializace. Tento atribut je zásadní při práci s daty JSON, protože zajišťuje, že požadované vlastnosti jsou vždy přítomny, což zabraňuje potenciálním chybám v důsledku chybějících dat.
V MVVMCross, při použití JSON pro navigaci nebo přenos dat mezi modely pohledu, „JSONRequiredAttribute` zajišťuje, že požadované vlastnosti jsou správně serializovány a deserializovány. To je obzvláště důležité, protože MVVMCross se silně spoléhá na JSON pro složité průchod parametrů během navigace.
Klíčové rozdíly
1. Účel:
- „Požadováno“ je pro obecné ověření modelu, což zajišťuje, že vlastnosti jsou po deserializaci naplněny.
- `jsonRequiredAttribute` je speciálně pro zajištění přítomnosti vlastností během deserializace JSON.
2. fáze použití:
- „Požadované“ se po deserializaci používá během validace modelu.
- `JsonRequiredAttribute` se používá během samotné deserializace JSON.
3. rozsah:
- „Požadované“ lze použít v různých datových formátech a ověřovacích scénářích.
- `jsonRequiredAttribute` je speciálně přizpůsobena pro zpracování dat JSON.
4. chování:
- Pokud chybí vlastnost označená „požadovaným“, bude to mít za následek chybu ověření po deserializaci.
- Pokud během deserializace JSON chybí vlastnost označená „jsonRequiredAttribute“, obvykle vyvolá výjimku nebo bude mít za následek chybu deserializace.
Stručně řečeno, zatímco oba atributy se používají k zajištění integrity dat, „požadované“ je spíše o ověření obecného modelu, zatímco `jsonRequiredAttribute` je konkrétně zaměřen na zajištění přítomnosti dat během serializace a deserializace v aplikacích MVVMCross.
Citace:[1] https://github.com/mvvmcross/nplus1daysofmvmcross/blob/master/n-39-crosslight-touch/crosslighttouch/properties/annotations.cs
[2] https://www.mvvmcross.com/documentation/plugins/json
[3] https://stackoverflow.com/questions/49237767/using-required-and-jsonRequired-in-sp-net-core-binding-with-json-body
[4] https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/generators/observableProperty
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://www.strathweb.com/2017/12/required-and-bindrequired-in-snet-core-mvc/
[7] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[8] https://www.mvvmcross.com/documentation/fundamentals/navigation
[9] https://learn.microsoft.com/en-us/dotnet/api/system.text.json.serializace.jsonRequiredAttribute?view=net-9.0
[10] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[11] https://learn.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-9.0