У MVVMcross, коли вони мають справу з перевіркою та серіалізацією даних, два атрибути часто вступають у гру: `Потрібно 'та` jsonRequiredAttribute`. Ці атрибути служать різним цілям і використовуються на різних етапах життєвого циклу застосування.
необхідний атрибут
Атрибут "Необхідний" є частиною простору імен `System.componentmodel.dataannotations" і використовується для перевірки моделі. Це вказує на те, що властивість повинна мати значення; В іншому випадку модель вважається недійсною. Цей атрибут зазвичай використовується після десеріалізації під час фази валідації моделі. Наприклад, в ядрі ASP.NET, якщо властивість прикрашена `[Необхідне]`, `ModelState 'буде недійсним, якщо ця властивість відсутня або нульова під час зв'язування моделі.
У MVVMCross, хоча атрибут "необхідний" може бути використаний для перевірки, він безпосередньо не взаємодіє з процесами серіалізації JSON або дезеріалізації. Натомість мова йде більше про те, щоб певні властивості були заповнені перед тим, як продовжувати ділову логіку.
jsonRequireDattribute
`JsonRequiredAttribute 'є специфічним для серіалізації та десеріалізації JSON. Він використовується для вказівки, що властивість повинна бути присутня в даних JSON під час десеріалізації. Цей атрибут має вирішальне значення при роботі з даними JSON, оскільки він гарантує, що необхідні властивості завжди присутні, запобігаючи потенційним помилкам через відсутні дані.
У MVVMCross, використовуючи JSON для навігації або передачі даних між моделями перегляду, `jsonRequiredAttribute` гарантує, що необхідні властивості є серіалізованими та дезеріалізованими правильно. Це особливо важливо тому
Ключові відмінності
1. Призначення:
- `Потрібно ' - це загальна валідація моделі, забезпечуючи властивості заповнюватися після десеріалізації.
- `jsonRequiredAttribute` спеціально для забезпечення властивостей присутніх під час Десеріалізації JSON.
2. Етап використання:
- `Потрібно 'використовується під час перевірки моделі після десеріалізації.
- `jsonRequiredAttribute` використовується під час самої дезеріалізації JSON.
3. Обсяг:
- `Необхідно 'може використовуватися в різних форматах даних та сценарії перевірки.
- `jsonRequiredAttribute` спеціально підібраний для обробки даних JSON.
4. Поведінка:
- Якщо властивість, позначена `необхідною ', відсутня, це призведе до помилки перевірки після десеріалізації.
- Якщо властивість, позначена `jsonRequiredAttribute ', відсутня під час дезеріалізації JSON, це, як правило, кидає виняток або призведе до помилки дезеріалізації.
Підсумовуючи це, хоча обидва атрибути використовуються для забезпечення цілісності даних, `Потрібно ' - це більше про загальну перевірку моделі, тоді як` jsonrequiredattribute' спеціально орієнтований на забезпечення присутності даних під час процесів серіалізації та дезеріалізації JSON у програмах mvvmcross.
Цитати:[1] https://github.com/mvvmcross/nplus1daysofmvvmcross/blob/master/n-39-crosslight-touch/crossulttouch/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-binding-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-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