Atribūts C# tiek izmantots, lai nodrošinātu, ka īpašums ir jānodrošina, lai nodrošinātu īpašumu, kad tiek veikti dati, piemēram, no JSON. Tomēr, apvienojot ar nullināmiem tipiem, tas var šķist pretintuitīvs, jo nullināmie tipi var būt nulle. Šī kombinācija bieži tiek izmantota, lai aizsargātu pret uzbrukumiem, kas nepietiekami ievietoti, ja ļaunprātīgs lietotājs pieprasījumā var izlaist īpašumu, liekot modeļa saistvielai piešķirt noklusējuma vērtību, nevis paaugstināt kļūdu [4].
MVVMCROSS kontekstā, kas ir savstarpējās platformas lietojumprogrammu veidošanas sistēma, izmantojot modeļa-View-ViewModel (MVVM) modeli, mijiedarbība starp “[Nepieciešamais] atribūts un nenogurstamais veids netiek tieši risināts. MVVMCROSS galvenokārt koncentrējas uz datu saistīšanos un navigāciju starp skatiem un skatu modeļiem. Tomēr izpratne par to, kā NULLABY veidi darbojas C#, var palīdzēt izstrādātājiem pārvaldīt datu konsekvenci un validāciju savās MVVMCross lietojumprogrammās.
Izpratne par nenobriedējamiem veidiem
C# 8.0 ieviesa nenobriedušu atsauces veidus, ļaujot izstrādātājiem skaidri norādīt, vai atsauces tips var būt nulle. Šī funkcija palīdz novērst nulles atsauces izņēmumus, sniedzot brīdinājumus apkopošanas laikā, kad nulles vērtības netiek pareizi apstrādātas [7]. Izmantojot nenobriedējamus tipus ar atribūtu “[obligāti], atribūts nodrošina, ka vērtība ir skaidri norādīta, savukārt nenobriedušais tips ļauj nullam būt derīgai ievadei noteiktos scenārijos [4].
Izmantojot [obligāto] ar nullināmiem tipiem
Scenārijos, kad jums ir jāizpilda īpašums, bet arī jāļauj tam būt spēkā (piemēram, rīkoties ar JSON kravām, kur īpašums var būt skaidri iestatīts uz NULL), izmantojot “[obligāto] atribūtu ar nenogurstošiem tipiem var būt izdevīgi. Tomēr šī pieeja galvenokārt attiecas uz datu validāciju Web API vai līdzīgos kontekstos, nevis tieši MVVMCross.
MVVMCROSS lietojumprogrammām ir svarīgi nodrošināt, ka īpašības tiek pareizi inicializētas un apstiprinātas skata modeļos. Kaut arī MVVMCROSS tieši mijiedarbojas ar `[nepieciešamo] atribūtu unikālā veidā, izstrādātāji var izmantot C#atskaitāmos atsauces veidus un validācijas atribūtus, lai pārvaldītu datu integritāti visā to lietojumprogrammā.
Pielāgota validācija mvvmcross
Ja jums ir jāizpilda konkrēti validācijas noteikumi MVVMCROSS lietojumprogrammā, jūs varētu apsvērt iespēju ieviest pielāgotu validācijas loģiku savos skata modeļos. Tas varētu ietvert nulles vērtību pārbaudi vai pārliecināt, ka noteiktas īpašības tiek aizpildītas pirms turpināt biznesa loģiku. MVVMCROSS nodrošina pielāgotu datu saistīšanas un mijiedarbības apstrādes mehānismus, kurus var izmantot šādas validācijas ieviešanai [5].
Rezumējot, lai gan atribūtu un nullināmos tipus galvenokārt izmanto datu validācijas kontekstos, piemēram, tīmekļa API, izpratne par to mijiedarbību var palīdzēt MVVMCross izstrādātājiem pārvaldīt datu konsekvenci un validāciju savās lietojumprogrammās. Tomēr pati MVVMCROSS nav īpaša iebūvēta atbalsta `[obligātajam] atribūtam tādā veidā, kā to varētu ietēt.
Atsauces:[1] https://stackoverflow.com/questions/47074979/mvvmcross-view-model-mvxinteraction-always nav
[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/
[4.]
[5] https://www.mvvmcross.com/documentation/advanced/custom-data saistoši
[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/