MVVMCROSS, nagrinėjant duomenų patvirtinimą ir nuoseklumą, dažnai atsiranda du atributai: „būtina“ ir „jSonRequiredAttribute“. Šie atributai naudojami skirtingais tikslais ir yra naudojami skirtinguose programos gyvavimo ciklo etapuose.
reikalingas atributas
„Reikalingas“ atributas yra „System.comPonentModel.Dataannations“ vardų sritis dalis ir naudojama modelio patvirtinimui. Tai rodo, kad turtas turi turėti vertę; Priešingu atveju modelis laikomas negaliojančiu. Šis atributas paprastai naudojamas po deserializacijos, modelio patvirtinimo etape. Pvz., „ASP.NET“ branduolyje, jei nuosavybė dekoruota „[būtina]“, „modelintstate“ bus neteisinga, jei tos savybės trūksta arba panaikina modelio surišimo metu.
MVVMCross, nors „reikalingas“ atributas gali būti naudojamas patvirtinimui, jis tiesiogiai sąveikauja su JSON serializacijos ar deserializacijos procesais. Vietoj to, daugiau reikia užtikrinti, kad prieš pradedant verslo logiką tam tikros savybės būtų užpildytos.
„JSonRequiredAttribute“
„JSonRequiredAttribute“ būdingas JSON serializacijai ir deserializacijai. Jis naudojamas nurodant, kad Deserializacijos metu JSON duomenys turi būti nuosavybė. Šis atributas yra labai svarbus dirbant su JSON duomenimis, nes jis užtikrina, kad visada būna būtinų savybių, ir tai užkerta kelią galioms klaidoms dėl trūkstamų duomenų.
MVVMCross, kai naudojate JSON navigacijai ar duomenų perdavimui tarp vaizdo modelių, „JSONRequiredAttribute“ užtikrina, kad reikiamos savybės būtų nuoseklos ir teisingai. Tai ypač svarbu, nes MVVMCROSS labai priklauso nuo JSON dėl sudėtingų parametrų, einančių navigacijos metu.
Pagrindiniai skirtumai
1. Tikslas:
- „Reikalinga“ yra skirtas bendram modelio patvirtinimui, užtikrinant, kad savybės būtų užpildytos po deserializacijos.
- „JSONREquiredAttribute“ skirtas specialiai užtikrinti savybių užtikrinimą JSON deserializacijos metu.
2. Naudojimo etapas:
- „Reikalinga“ naudojama modelio patvirtinimo metu, po deserializacijos.
- „JsonRequiredAttribute“ naudojamas pačiame JSON deserializacijos metu.
3. Taikymo sritis:
- „Reikalinga“ gali būti naudojamas įvairiuose duomenų formatuose ir patvirtinimo scenarijuose.
- „JSONRequiredAttribute“ yra specialiai pritaikytas JSON duomenų tvarkymui.
4. Elgesys:
- Jei trūksta nuosavybės, pažymėtos „reikalinga“, tai padarys patvirtinimo klaidą po deserializacijos.
- Jei JSON deserializacijos metu trūksta nuosavybės, pažymėtos „jSonRequiredAttribute“, ji paprastai išmes išimtį arba sukelia deserializacijos klaidą.
Apibendrinant galima pasakyti, kad nors abu atributai naudojami duomenų vientisumui užtikrinti, „būtinas“ labiau susijęs su bendrojo modelio patvirtinimu, tuo tarpu „JSONRequiredAttribute“ yra specialiai orientuotas į duomenų buvimo JSON serializacijos metu ir deserializacijos procesų užtikrinimą MVVMCross programose.
Citatos:[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-riding-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-d-bindrequired-in-asp-net-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.serialization.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