في MVVMCROSS ، عند التعامل مع التحقق من صحة البيانات وتسلسلها ، غالبًا ما يتم تشغيل سمتين: "مطلوب" و `jsonrequiredattribute`. تخدم هذه السمات أغراض مختلفة وتستخدم في مراحل مختلفة من دورة حياة التطبيق.
السمة المطلوبة
سمة "المطلوبة" هي جزء من مساحة الاسم "system.componentmodel.dataannotations" ويستخدم للتحقق من صحة النموذج. إنه يشير إلى أن الخاصية يجب أن يكون لها قيمة ؛ خلاف ذلك ، يعتبر النموذج غير صالح. عادة ما يتم استخدام هذه السمة بعد هجره ، خلال مرحلة التحقق من صحة النموذج. على سبيل المثال ، في ASP.NET Core ، إذا تم تزيين خاصية بـ "[مطلوب] ، فإن" StateState "ستكون غير صالحة إذا كانت تلك الخاصية مفقودة أو فارغة أثناء ربط النموذج.
في MVVMCROSS ، في حين يمكن استخدام سمة "المطلوبة" للتحقق من الصحة ، فإنها لا تتفاعل مباشرة مع عمليات التسلسل أو التسلسل JSON. بدلاً من ذلك ، فإن الأمر يتعلق أكثر من ضمان ملء الخصائص قبل المتابعة مع منطق العمل.
jsonrequiredattribute
`jsonrequiredattribute" خاص بالتسلسل JSON وفرط التسلسل. يتم استخدامه للإشارة إلى أن الخاصية يجب أن تكون موجودة في بيانات JSON أثناء التخلص من التالي. هذه السمة أمر بالغ الأهمية عند العمل مع بيانات JSON ، حيث يضمن وجود خصائص مطلوبة دائمًا ، مما يمنع الأخطاء المحتملة بسبب البيانات المفقودة.
في MVVMCROSS ، عند استخدام JSON للتنقل أو نقل البيانات بين نماذج العرض ، يضمن `JSONREQUIREDATTRIBUTE` التسلسل والخصائص المطلوبة بشكل صحيح. هذا مهم بشكل خاص لأن MVVMcross يعتمد بشكل كبير على JSON لمعلمة معقدة مرور أثناء التنقل.
الاختلافات الرئيسية
1. الغرض:
- "مطلوب" للتحقق من صحة النموذج العام ، مما يضمن ملء الخصائص بعد التخلص من التخلص.
- `jsonrequiredattribute" على وجه التحديد لضمان وجود خصائص خلال JSON Deserialization.
2. مرحلة الاستخدام:
- "مطلوب" يتم استخدامه أثناء التحقق من صحة النموذج ، بعد التخلص من التسلسل.
- `jsonrequiredattribute" يستخدم خلال JSON Deserialization نفسها.
3. النطاق:
- يمكن استخدام "المطلوب" عبر تنسيقات البيانات المختلفة وسيناريوهات التحقق من الصحة.
- `jsonrequiredattribute" مصمم خصيصًا للتعامل مع بيانات JSON.
4. السلوك:
- إذا كانت خاصية تحمل علامة "مطلوبة" مفقودة ، فسيؤدي ذلك إلى خطأ في التحقق من الصحة بعد التخلص من التسلسل.
- إذا كانت خاصية تحمل علامة "jsonrequiredattribute" مفقودة أثناء هجر JSON ، فإنها عادةً ما ترمي استثناءًا أو تؤدي إلى خطأ في التحول.
باختصار ، على الرغم من استخدام كلتا السمة لضمان تكامل البيانات ، فإن "المطلوب" أكثر حول التحقق من صحة النموذج العام ، في حين أن `jsonrequiredattribute" يركز على وجه التحديد على ضمان وجود البيانات أثناء عمليات التسلسل JSON وعمليات التخلص في تطبيقات mvvvmcross.
الاستشهادات:[1] https://github.com/mvvmcross/nplus1daysofmvvmcross/blob/master/n-39-crosslight-touch/crosslighttouch/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]
[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