MVVMCross'ta, veri doğrulama ve serileştirme ile uğraşırken, iki özellik genellikle devreye girer: `` gerekli 've `jsonRequiredAttribute`. Bu özellikler farklı amaçlara hizmet eder ve uygulama yaşam döngüsünün farklı aşamalarında kullanılır.
Gerekli Özellik
`` Gerekli '' özelliği, `system.componentModel.DataAnnotations` ad alanının bir parçasıdır ve model doğrulaması için kullanılır. Bir mülkün bir değeri olması gerektiğini gösterir; Aksi takdirde, model geçersiz kabul edilir. Bu öznitelik tipik olarak model doğrulama aşaması sırasında sterizalizasyondan sonra kullanılır. Örneğin, ASP.NET çekirdeğinde, bir özellik `` [gerekli] `ile dekore edilmişse, model bağlanma sırasında bu özellik eksikse veya boşsa` `ModelState '' geçersiz olacaktır.
MVVMCross'ta, `` gerekli 'özniteliği doğrulama için kullanılabilirken, JSON serileştirme veya serileştirme işlemleri ile doğrudan etkileşime girmez. Bunun yerine, daha çok iş mantığına devam etmeden önce belirli özelliklerin doldurulmasını sağlamakla ilgilidir.
JsonRequiredAttribute
`JsonRequiredAttribute 'JSON serileştirme ve serileştirmeye özgüdür. Ses. Bu özellik, JSON verileri ile çalışırken çok önemlidir, çünkü gerekli özelliklerin her zaman mevcut olmasını sağlar ve eksik verilerden kaynaklanan potansiyel hataları önler.
MVVMCross'ta, görünüm modelleri arasında navigasyon veya veri aktarımı için JSON kullanırken, `JsonRequiredAttribute` gerekli özelliklerin doğru bir şekilde serileştirilmesini ve süzülmesini sağlar. Bu özellikle önemlidir, çünkü MVVMCross navigasyon sırasında karmaşık parametre geçmesi için büyük ölçüde JSON'a güvenir.
Anahtar Farklılıklar
1. Amaç:
- `` Gerekli '' genel model doğrulaması içindir, özelliklerin sterizalizasyondan sonra doldurulmasını sağlar.
- `jsonRequiredAttribute` özellikle JSON sealizasyonu sırasında özelliklerin mevcut olmasını sağlamak içindir.
2. Kullanım aşaması:
- `` gerekli '' model doğrulama sırasında, serileştirme işleminden sonra kullanılır.
- `JsonRequiredAttribute` JSON Deserializasyonun kendisi sırasında kullanılır.
3. Kapsam:
- `` Gerekli '' çeşitli veri formatları ve doğrulama senaryolarında kullanılabilir.
- `jsonRequiredAttribute` JSON veri işleme için özel olarak uyarlanmıştır.
4. Davranış:
- `` Gerekli '' ile işaretlenmiş bir özellik eksikse, bu, seansizasyondan sonra bir doğrulama hatasına neden olur.
- JSON Deserializasyon sırasında `JsonRequiredAttribute 'ile işaretlenmiş bir özellik eksikse, genellikle bir istisna atar veya bir seansizasyon hatasına neden olur.
Özetle, her iki özellik de veri bütünlüğünü sağlamak için kullanılırken, `` gerekli '' genel model doğrulaması ile ilgilidir, oysa `JsonRequiredAttribute 'özellikle MVVMCross uygulamalarında JSON serileştirme ve sealanizasyon süreçleri sırasında veri varlığını sağlamaya odaklanmıştır.
Alıntılar:[1] https://github.com/mvvmcross/nplus1daysofmvmcross/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-equired-and-jsonrequired-in-pp-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-por-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/fundament/viewmodel-lifecycle
[11] https://learn.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-9.0