Özel ve Koşullu Kurallar
Karmaşık, koşullu doğrulama mantığı oluşturun.
Özel ve Koşullu Kurallar, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Yerleşik Doğrulayıcıların Ötesinde
Gerçek dünya doğrulaması çoğu zaman özel mantık gerektirir: bir değerin etki alanı denetiminden geçmesi veya yalnızca belirli koşullarda uygulanan bir kural gibi. FluentValidation, her ikisini de Must, When ve özel doğrulayıcı türleriyle destekler.
Must Koşul İfadesi
Must, değer geçerli olduğunda true döndüren bir koşul ifadesi alır. Rastgele mantığı satır içinde ifade etmenin en basit yoludur.
RuleFor(c => c.Username)
.Must(name => !name.Contains(" "))
.WithMessage("Username cannot contain spaces.");Tüm Nesneye Erişimle Must
Must yönteminin bir aşırı yüklemesi, özellik değeriyle birlikte üst nesneyi de sunarak özellikler arası denetimler yapmanızı sağlar.
RuleFor(o => o.DiscountedPrice)
.Must((order, discounted) => discounted <= order.OriginalPrice)
.WithMessage("Discounted price cannot exceed original price.");When ile Koşullu Kurallar
When, bir kuralı yalnızca bir koşul sağlandığında uygular. Burada teslimat adresi yalnızca fiziksel siparişler için gereklidir.
RuleFor(o => o.ShippingAddress)
.NotEmpty()
.When(o => o.RequiresShipping);Unless Değiştiricisi
Unless, When ifadesinin tersidir: koşul doğru olmadıkça kural çalışır.
RuleFor(o => o.CouponCode)
.NotEmpty()
.Unless(o => o.IsGift);Koşulları Gruplama
Bir koşulu tüm kurallar arasında temiz biçimde paylaşmak için birkaç kuralı tek bir When(...) bloğuna sarın.
When(o => o.RequiresShipping, () =>
{
RuleFor(o => o.ShippingAddress).NotEmpty();
RuleFor(o => o.PostalCode).NotEmpty();
});MustAsync ile Asenkron Özel Mantık
Denetiminiz veritabanına veya bir API'ye ihtiyaç duyduğunda MustAsync kullanın. Modeli ValidateAsync ile doğrulayın.
RuleFor(u => u.Email)
.MustAsync(async (email, cancellation) =>
!await _repository.EmailExistsAsync(email))
.WithMessage("Email is already registered.");Yeniden Kullanılabilir Özel Doğrulayıcı Yazma
Projeler arasında yeniden kullanacağınız mantık için IRuleBuilder üzerinde bir uzantı yöntemi yazın. Böylece özel kurallar birinci sınıf, zincirlenebilir doğrulayıcılara dönüşür.
public static class CustomValidators
{
public static IRuleBuilderOptions<T, string> ValidSlug<T>(
this IRuleBuilder<T, string> rule)
{
return rule.Matches("^[a-z0-9-]+$")
.WithMessage("Must be a lowercase slug.");
}
}Özel Doğrulayıcıyı Kullanma
Tanımlandıktan sonra uzantı, herhangi bir yerleşik doğrulayıcı gibi zincirlenir ve doğrulayıcılarınızı ifade gücü yüksek tutar.
RuleFor(p => p.Slug).NotEmpty().ValidSlug();Tam Denetim İçin Custom Yöntemi
Karmaşık sonuçlar için Custom, bir bağlam kullanarak doğrulama hatalarını komut temelli biçimde eklemenizi sağlar.
RuleFor(o => o.Items).Custom((items, context) =>
{
if (items.Count == 0)
context.AddFailure("An order must contain at least one item.");
});Cascade Kipleri
Varsayılan olarak zincirdeki tüm doğrulayıcılar, biri başarısız olduktan sonra bile çalışır. İlk hatada durmak ve gereksiz ya da güvenli olmayan denetimleri önlemek için CascadeMode.Stop ayarlayın.
RuleFor(c => c.Email)
.Cascade(CascadeMode.Stop)
.NotEmpty()
.EmailAddress();Hızlı Kontrol
Koşullu ve özel kurallar konusundaki bilginizi sınayın.
Özet
Özel ve koşullu kurallar FluentValidation'ı esnek kılar: satır içi koşul ifadeleri için Must (tüm nesneyi sunan bir aşırı yüklemeyle), koşullar için When/Unless, gruplandırılmış When blokları, girdi/çıktı denetimleri için MustAsync, yeniden kullanılabilir IRuleBuilder uzantıları, komut temelli Custom yöntemi ve değerlendirme akışını denetlemek için Cascade kipleri.
Sıkça Sorulan Sorular
“Özel ve Koşullu Kurallar” dersi ücretsiz mi?
Evet — “Özel ve Koşullu Kurallar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“Özel ve Koşullu Kurallar” dersinde ne öğreneceğim?
Karmaşık, koşullu doğrulama mantığı oluşturun. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Özel ve Koşullu Kurallar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Veri Açıklaması Doğrulaması
- FluentValidation Kuralları
- Özel ve Koşullu Kurallar
- Doğrulamayı API'lerle Tümleştirme