Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kako atribut [Zahtevano] v API -ju MVVMcross deluje z nihanimi tipi


Kako atribut [Zahtevano] v API -ju MVVMcross deluje z nihanimi tipi


Atribut `Zahtevano] v C# se uporablja za zagotovitev, da je treba pri deserializaciji podatkov, na primer JSON, zagotoviti lastnost. Vendar pa se lahko v kombinaciji z ničnimi vrstami zdi kontratuktivno, ker so lahko nične vrste nične. Ta kombinacija se pogosto uporablja za zaščito pred napadi premajhne objave, kjer lahko zlonamerni uporabnik v zahtevi izpusti lastnost, zaradi česar bi model vezivo dodelil privzeto vrednost, namesto da bi dvignil napako [4].

V okviru MVVMcross, ki je okvir za gradnjo aplikacij za navzkrižno platform z vzorcem modela-ogled-pogled (MVVM) (MVVM), se interakcija med atributom `[Zahtevane]` in nullabilnimi vrstami ne obravnava neposredno. MVVMcross se osredotoča predvsem na vezavo podatkov in navigacijo med pogledi in modeli pogledov. Vendar pa lahko razumevanje, kako delujoče vrste delujejo v C#, pomaga razvijalcem pri upravljanju doslednosti in potrditve podatkov v svojih aplikacijah MVVMcross.

Razumevanje nuhalnih vrst

C# 8.0 je uvedla Nullable Reference Vrste, ki razvijalcem omogočajo izrecno označevanje, ali je referenčna vrsta lahko nična. Ta funkcija pomaga preprečiti nulske referenčne izjeme z navedbo opozoril v času prevajanja, ko ničelne vrednosti ne ravnajo pravilno [7]. Pri uporabi NULLABLE Type z atributom `[Potreben]` atribut zagotavlja, da je vrednost izrecno zagotovljena, medtem ko nihalna vrsta omogoča možnost, da je NULL veljaven vhod v določenih scenarijih [4].

Uporaba [Potrebno] z ničnimi vrstami

V scenarijih, kjer morate uveljaviti, da je nepremičnina zagotovljena, lahko pa tudi nična (na primer, da obvladuje JSON -ove obremenitve, kjer je lahko nepremičnina izrecno nastavljena na NULL), z uporabo atributa `[Zahtevano]` z nihanimi tipi je lahko koristno. Vendar ta pristop velja predvsem za potrjevanje podatkov v spletnih API -jih ali podobnih kontekstih, ne pa neposredno znotraj MVVMcross.

Za aplikacije MVVMcross je ključnega pomena zagotavljanje, da so lastnosti pravilno inicializirane in potrjene v modelih pogleda. Medtem ko MVVMcross ne komunicira neposredno z atributom `[Potreben]` na edinstven način, lahko razvijalci uporabijo C#'nične referenčne vrste in atribute validacije za upravljanje celovitosti podatkov v svoji aplikaciji.

Validacija po meri v mvvmcross

Če morate uveljaviti posebna pravila za potrjevanje v aplikaciji MVVMcross, lahko razmislite o izvajanju logike preverjanja po meri v modelih pogleda. To bi lahko vključevalo preverjanje ničelnih vrednosti ali zagotovitev, da se nekatere lastnosti naselijo, preden nadaljujejo s poslovno logiko. MVVMcross ponuja mehanizme za vezavo podatkov in ravnanje z interakcijo po meri, ki jih je mogoče uporabiti za izvajanje takšne validacije [5].

Če povzamemo, medtem ko se atribute "[Potrebne]` atribute in Nullable uporabljajo predvsem v kontekstih validacije podatkov, kot so spletni API -ji, lahko razumevanje njihove interakcije pomaga razvijalcem MVVMCross, da upravljajo skladnost podatkov in potrditev podatkov v svojih aplikacijah. Vendar sam MVVMcross nima posebne vgrajene podpore za atribut `[potrebno]` na način, kako bi lahko spletni okviri.

Navedbe:
[1] https://stackoverflow.com/questions/47074979/mvvmcross-view-model-mvxInteraction-is-always-null
[2] https://dev.to/theramoliya/c-required-attribute-for-non-nullable-reference-ypes-44HB
[3] https://www.reddit.com/r/csharp/comments/10wayn5/required_attribute_and_null_help/
[4] https://stackoverflow.com/questions/43688968/what-does-it-mean-for-a-property-to-be-required-and-insullable
[5] https://www.mvvmcross.com/documentation/advanced/custom-tata---inding
[6] https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references
[7] https://devblogs.microsoft.com/dotnet/embracing-nullable-reference-types/
[8] https://www.reddit.com/r/blazor/comments/14x5krd/nullable_types_and_required_keyword_how_is/