Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Як взаємодіє атрибут [необхідний] з нульовими типами в API MVVMCROSS


Як взаємодіє атрибут [необхідний] з нульовими типами в API MVVMCROSS


`[Потрібно]` атрибут у C# використовується для того, щоб властивість повинна бути надана при десеріалізації даних, наприклад, від JSON. Однак у поєднанні з нульовими типами це може здатися контрінтуїтивним, оскільки нульові типи можуть бути нульовими. Ця комбінація часто використовується для захисту від нападів, які не відпускаються, коли зловмисний користувач може опустити властивість у запиті, внаслідок чого модель сполука призначила значення за замовчуванням замість того, щоб підвищити помилку [4].

У контексті MVVMCross, який є основою для побудови міжплатформних програм за допомогою моделі-View-ViewModel (MVVM), взаємодію між атрибутом [необхідним] `атрибутом та нульми, що не підлягають нерівномірності, безпосередньо не розглядаються. MVVMcross в першу чергу фокусується на прив'язці даних та навігації між переглядами та моделями перегляду. Однак розуміння того, як працюють нерівні типи в C#, може допомогти розробникам керувати узгодженою та перевіркою даних у своїх програмах MVVMCross.

Розуміння нульових типів

C# 8.0 Введені нульові довідкові типи, що дозволяє розробникам чітко вказати, чи може бути референтний тип нульовим. Ця функція допомагає запобігти нульованому еталонному винятку, надаючи попередження під час компіляції, коли нульові значення не обробляються належним чином [7]. Використовуючи нульові типи з атрибутом `[необхідний]`, атрибут гарантує, що значення явно надається, тоді як нульовий тип дозволяє отримати можливість нуля є дійсним входом у певних сценаріях [4].

Використання [Необхідно] з нульовими типами

У сценаріях, коли вам потрібно застосувати, що властивість надається, але також дозволяє це бути нульовим (наприклад, обробляти корисні навантаження JSON, де властивість може бути чітко встановлене на NULL), використовуючи атрибут `[необхідний]` з нульовими типами, може бути корисним. Однак цей підхід насамперед застосовується до перевірки даних у веб -API або подібних контекстах, а не безпосередньо в межах MVVMCross.

Для додатків MVVMCross забезпечення належного ініціалізації та затверджених властивостей має вирішальне значення. Хоча MVVMCross не безпосередньо взаємодіє з атрибутом [необхідним] `` унікальним чином, розробники можуть використовувати нульові довідкові типи C#та атрибути перевірки для управління цілісністю даних у їхньому додатку.

Спеціальна перевірка в Mvvmcross

Якщо вам потрібно виконувати конкретні правила перевірки в програмі MVVMCross, ви можете розглянути можливість реалізації власної логіки перевірки в моделях перегляду. Це може включати перевірку нульових значень або забезпечення того, щоб певні властивості були заповнені перед тим, як продовжувати ділову логіку. MVVMCross забезпечує механізми для власного зв'язування даних та обробки взаємодії, які можуть бути використані для реалізації такої перевірки [5].

Підсумовуючи це, хоча `[необхідний] атрибут та нульди типи використовуються насамперед у контекстах перевірки даних, таких як веб -API, розуміння їх взаємодії може допомогти розробникам MVVMcross керувати узгодженою та перевіркою даних у своїх програмах. Однак сам Mvvmcross не має конкретної вбудованої підтримки для `[необхідного]` атрибута в тому, як можуть веб-рамки.

Цитати:
[1] https://stackoverflow.com/questions/47074979/mvvmcross-view-model-mvxinteraction-is-always-null
[2] https://dev.to/theramoliya/c-required-attribute-for-non-nulable-reference-types-44hb
[3] https://www.reddit.com/r/csharp/comments/10wayn5/required_attribute_and_null_help/
[4] https://stackoverflow.com/questions/43688968/what-does-it-for-a-property-to-required-and-nulla
[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/