0Pricing
C# Academy · Leçon

Règles FluentValidation

Écrivez des validateurs expressifs avec une syntaxe fluide.

Règles FluentValidation est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Pourquoi FluentValidation

FluentValidation est une bibliothèque .NET répandue qui déplace les règles de validation hors de vos modèles et dans des classes de validation dédiées. Les règles s’expriment avec une API lisible et chaînable (fluide), ce qui garde les modèles propres et les règles vérifiables.

dotnet add package FluentValidation
dotnet add package FluentValidation.DependencyInjectionExtensions

La classe de base AbstractValidator

Vous écrivez un validator en héritant de AbstractValidator<T>, où T désigne le modèle que vous validez. Les règles sont définies dans le constructeur.

using FluentValidation;

public class CustomerValidator : AbstractValidator<Customer>
{
    public CustomerValidator()
    {
        // rules go here
    }
}

Définir votre première règle avec RuleFor

RuleFor sélectionne une propriété au moyen d’une lambda, puis vous lui appliquez des validateurs en chaîne. NotEmpty() rejette les valeurs nulles, les chaînes vides et les valeurs par défaut.

public class CustomerValidator : AbstractValidator<Customer>
{
    public CustomerValidator()
    {
        RuleFor(c => c.Name).NotEmpty();
    }
}

Enchaîner plusieurs validateurs

Chaque RuleFor peut enchaîner plusieurs validateurs. Ils s’exécutent dans l’ordre et doivent tous réussir. La lecture ressemble presque à celle d’une phrase.

RuleFor(c => c.Name)
    .NotEmpty()
    .MinimumLength(2)
    .MaximumLength(50);

Validateurs intégrés

FluentValidation fournit de nombreux validateurs : NotNull, NotEmpty, EmailAddress, Length, InclusiveBetween, GreaterThan, Matches (expression régulière), et bien d’autres.

RuleFor(c => c.Email).NotEmpty().EmailAddress();
RuleFor(c => c.Age).InclusiveBetween(18, 120);
RuleFor(c => c.Phone).Matches(@"^\+?[0-9]{7,15}$");

Messages d’erreur personnalisés

Utilisez WithMessage pour remplacer le message par défaut. Vous pouvez interpoler des paramètres tels que {PropertyName} et {PropertyValue}.

RuleFor(c => c.Email)
    .NotEmpty().WithMessage("Email is required.")
    .EmailAddress().WithMessage("{PropertyValue} is not a valid email.");

Codes d’erreur et gravité personnalisés

Au-delà des messages, vous pouvez associer un WithErrorCode lisible par machine et un WithSeverity (Erreur, Avertissement, Information) afin d’aider les clients à réagir différemment.

RuleFor(c => c.Name)
    .NotEmpty()
    .WithErrorCode("NAME_REQUIRED")
    .WithSeverity(Severity.Error);

Valider des objets imbriqués

Utilisez SetValidator pour réutiliser un validator avec un objet enfant et garder des règles modulaires.

public class OrderValidator : AbstractValidator<Order>
{
    public OrderValidator()
    {
        RuleFor(o => o.Customer).SetValidator(new CustomerValidator());
    }
}

Valider des collections

RuleForEach applique les règles à chaque élément d’une collection.

public class OrderValidator : AbstractValidator<Order>
{
    public OrderValidator()
    {
        RuleForEach(o => o.Items)
            .ChildRules(item => item.RuleFor(i => i.Quantity).GreaterThan(0));
    }
}

Exécuter manuellement un validator

Vous pouvez appeler directement un validator et examiner le résultat. ValidationResult expose IsValid ainsi qu’une liste Errors.

var validator = new CustomerValidator();
ValidationResult result = validator.Validate(customer);

if (!result.IsValid)
{
    foreach (var error in result.Errors)
    {
        Console.WriteLine(error.PropertyName + ": " + error.ErrorMessage);
    }
}

Validation asynchrone

Lorsqu’une règle nécessite des opérations d’entrée-sortie (comme une vérification en base de données), utilisez ValidateAsync et des validateurs asynchrones tels que MustAsync, que nous étudierons dans la leçon consacrée aux règles personnalisées.

ValidationResult result = await validator.ValidateAsync(customer);

Vérification rapide

Vérifiez vos connaissances de base sur FluentValidation.

Récapitulatif

FluentValidation place les règles dans des classes AbstractValidator<T>. RuleFor cible une propriété, puis vous enchaînez des validateurs intégrés comme NotEmpty, EmailAddress et InclusiveBetween. Personnalisez les retours avec WithMessage, WithErrorCode et WithSeverity, réutilisez la logique avec SetValidator et RuleForEach, puis exécutez les règles avec Validate/ValidateAsync.

Questions Fréquemment Posées

La leçon « Règles FluentValidation » est-elle gratuite ?

Oui — le texte complet de « Règles FluentValidation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Règles FluentValidation » ?

Écrivez des validateurs expressifs avec une syntaxe fluide. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Règles FluentValidation » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Validation par annotations de données
  2. Règles FluentValidation
  3. Règles personnalisées et conditionnelles
  4. Intégrer la validation aux API
← Retour à C# Academy