Attributten `[påkrævet]` i C# bruges til at sikre, at der skal leveres en egenskab, når der er dæmpende data, f.eks. Fra JSON. Når det kombineres med nullable typer, kan det virke modintuitivt, fordi nullable typer kan være null. Denne kombination bruges ofte til at beskytte mod angreb under postende, hvor en ondsindet bruger kan udelade en egenskab i en anmodning, hvilket får modellen til at tildele en standardværdi i stedet for at hæve en fejl [4].
I forbindelse med MVVMCROSS, som er en ramme for opbygning af kryds-platform-applikationer ved hjælp af Model-View-ViewModel (MVVM) -mønsteret, behandles interaktionen mellem `[krævet] attribut og nullable typer ikke direkte. MVVMCROSS fokuserer primært på databinding og navigation mellem visninger og visningsmodeller. Imidlertid kan forståelse af, hvordan nullable typer fungerer i C#, hjælpe udviklere med at styre datakonsistens og validering inden for deres MVVMCROSS -applikationer.
Forståelse af nullable typer
C# 8.0 introducerede nullable referencetyper, så udviklere eksplicit kan indikere, om en referencetype kan være null. Denne funktion hjælper med at forhindre undtagelser fra nulreferencer ved at give advarsler på kompileringstid, når nulværdier ikke håndteres korrekt [7]. Når man bruger nullable typer med `[påkrævet] attribut, sikrer attributten, at en værdi eksplicit leveres, mens den nullable type giver mulighed for, at NULL er et gyldigt input i visse scenarier [4].
Brug [påkrævet] med nullable typer
I scenarier, hvor du har brug for at håndhæve, at der leveres en ejendom, men også tillader, at den er nul (for eksempel at håndtere JSON -nyttelast, hvor en ejendom eksplicit kan indstilles til null), kan det være fordelagtigt at bruge den `[krævede] attribut med nullable typer. Imidlertid gælder denne tilgang primært for datavalidering i web -API'er eller lignende sammenhænge snarere end direkte inden for MVVMCROSS.
For MVVMCROSS -applikationer er det afgørende at sikre, at egenskaber er korrekt initialiseret og valideret inden for visningsmodeller. Mens MVVMCROSS ikke direkte interagerer med `[krævet] attribut på en unik måde, kan udviklere udnytte C#'s NULLABLE REFERENCE TYPE og Validation -attributter for at styre dataintegritet på tværs af deres applikation.
Brugerdefineret validering i MVVMCross
Hvis du har brug for at håndhæve specifikke valideringsregler inden for en MVVMCROSS -applikation, kan du overveje at implementere brugerdefineret valideringslogik inden for dine synsmodeller. Dette kan involvere kontrol af nulværdier eller sikre, at visse egenskaber er befolket, før de fortsætter med forretningslogik. MVVMCROSS tilvejebringer mekanismer til brugerdefineret databinding og interaktionshåndtering, som kan bruges til at implementere en sådan validering [5].
Sammenfattende, mens `[krævet] attribut- og nullable typer primært bruges i datavalideringskontekster som Web API'er, kan det at forstå deres interaktion hjælpe MVVMCROSS -udviklere med at styre datakonsistens og validering inden for deres applikationer. Imidlertid har MVVMCROSS i sig selv ikke specifik indbygget support til `[påkrævet] attribut på den måde, hvorpå webrammer kan.
Citater:[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-types-44hb
[3] https://www.reddit.com/r/csharp/comments/10wayn5/required_attribute_and_null_help/
)
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[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/