V MVVMCross pri riešení validácie údajov a serializácie sa často objavujú dva atribúty: `požadované` a` jsonRequiredAttribute`. Tieto atribúty slúžia na rôzne účely a používajú sa v rôznych štádiách životného cyklu aplikácie.
Požadovaný atribút
Atribút „požadovaný“ je súčasťou menného priestoru „System.componentModel.dataAnnotations“ a používa sa na validáciu modelu. Znamená to, že vlastnosť musí mať hodnotu; V opačnom prípade sa tento model považuje za neplatný. Tento atribút sa zvyčajne používa po deserializácii počas fázy validácie modelu. Napríklad v jadre ASP.NET, ak je vlastnosť zdobená `[požadovanými]`, bude `ModelState` neplatný, ak táto vlastnosť chýba alebo nulová počas väzby modelu.
V MVVMCross, zatiaľ čo atribút „požadovaného“ sa môže použiť na validáciu, priamo neinteraguje s procesmi sériácie alebo deserializácie JSON. Namiesto toho je to viac o zabezpečení vyplnenia určitých nehnuteľností pred pokračovaním v obchodnej logike.
jsonRequiredAttribute
„JsonRequiredAttribute“ je špecifický pre sériáciu a deserializáciu JSON. Používa sa na označenie, že vlastnosť musí byť prítomná v údajoch JSON počas deserializácie. Tento atribút je rozhodujúci pri práci s údajmi JSON, pretože zaisťuje, že sú vždy prítomné požadované vlastnosti, čo bráni potenciálnym chybám v dôsledku chýbajúcich údajov.
V MVVMCross, pri používaní JSON na navigáciu alebo prenos dát medzi modelmi View `jSonRequiredATtribute` zaisťuje, že požadované vlastnosti sú serializované a správne deserializované. Je to obzvlášť dôležité, pretože MVVMCROSS sa vo veľkej miere spolieha na JSON, pokiaľ ide o zložitý parameter prechádzajúci počas navigácie.
Kľúčové rozdiely
1. Účel:
- „Vyžaduje“ je pre všeobecnú validáciu modelu, zabezpečenie obývania vlastností po deserializácii.
- `jSonRequiredAttribute` je špecificky na zabezpečenie toho, aby boli prítomné vlastnosti počas deserializácie JSON.
2. Fáza použitia:
- „Vyžaduje“ sa používa počas overenia modelu po deserializácii.
- `jSonRequiredAttribute` sa používa počas samotnej JSON Deserialization.
3. Rozsah:
- „Vyžaduje“ sa môže použiť v rôznych formátoch údajov a validačných scenároch.
- `jSonRequiredAttribute` je špecificky prispôsobený pre spracovanie údajov JSON.
4. Správanie:
- Ak vlastnosť označená `požadovanou 'chýba, bude to mať po deserializácii k chybe validácie.
- Ak sa počas deserializácie JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON -DESERIALIZÁCII SPRAVODUJE, Zvyčajne vyvolá výnimku alebo za následok chybu deserializácie.
Stručne povedané, zatiaľ čo oba atribúty sa používajú na zabezpečenie integrity údajov, „požadovaná“ je viac o všeobecnej validácii modelu, zatiaľ čo „JSONRequiredATtribute“ sa špecificky zameriava na zabezpečenie prítomnosti údajov počas procesov serializácie a deserializácie JSON v aplikáciách MVVMCross.
Citácie:[1] https://github.com/mvvmcross/nplus1daysofmvvmcross/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-asp-net-core-model-binding-with-json-body-body
[4] https://learn.microsoft.com/en-us/dotnet/communityToolkit/mvvm/generators/obserdableProperty
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-verview
[6] https://www.strathweb.com/2017/12/Required-and-bindrequired-in-asp-net-core-mvc/
[7] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[8] https://www.mvvmcross.com/documentation/funmamentals/navigation
[9] https://learn.microsoft.com/en-us/dotnet/api/system.text.json.serialization.jsonRequiredAttribute?view=net-9.0
[10] https://www.mvvmcross.com/documentation/funmamentals/viewmodel-lifecycle
[11] https://learn.microsoft.com/en-us/aspnet/core/mvc/models/Validation?View=aspnetcore-9.0