FluentValidation para C# (.NET): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é FluentValidation e para que serve?

\n\n

FluentValidation é uma biblioteca popular para .NET, projetada para construir regras de validação de objetos de negócio rigorosas e legíveis. Ao contrário dos atributos de validação internos (Data Annotations), o FluentValidation oferece uma abordagem baseada na separação da lógica de validação e do modelo de dados. Isso torna o código mais limpo, testável e flexível.

\n\n

A biblioteca utiliza uma "interface fluente" (Fluent Interface), que permite construir cadeias de regras de validação usando notação por pontos. O FluentValidation suporta cenários complexos: validações em cascata, regras condicionais, validadores personalizados, trabalho com listas e objetos aninhados.

\n\n

Para que serve o FluentValidation?

\n
    \n
  • Separação de responsabilidades: As regras de validação não poluem o modelo de dados.
  • \n
  • Legibilidade: As cadeias de regras são fáceis de ler e manter.
  • \n
  • Flexibilidade: Fácil criar regras complexas, condicionais e compostas.
  • \n
  • Testabilidade: Os validadores podem ser testados como classes comuns.
  • \n
  • Integração: Integra-se perfeitamente com ASP.NET Core, MVC, Web API e outros frameworks.
  • \n
\n\n

Instalação do FluentValidation

\n\n

A instalação da biblioteca é feita através do gerenciador de pacotes NuGet. Execute um dos seguintes comandos no console do gerenciador de pacotes ou no terminal .NET CLI:

\n\n
// Instalação via Package Manager Console\nInstall-Package FluentValidation\n\n// Instalação via .NET CLI\ndotnet add package FluentValidation
\n\n

Para integração com ASP.NET Core, será necessário também o pacote:

\n\n
dotnet add package FluentValidation.AspNetCore
\n\n

Início rápido: exemplo de código

\n\n

Suponha que temos um modelo de usuário:

\n\n
public class User\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public string Email { get; set; }\n    public int Age { get; set; }\n    public string Password { get; set; }\n    public string ConfirmPassword { get; set; }\n}
\n\n

Vamos criar um validador, herdando de AbstractValidator<User>:

\n\n
using FluentValidation;\n\npublic class UserValidator : AbstractValidator<User>\n{\n    public UserValidator()\n    {\n        RuleFor(user => user.Name)\n            .NotEmpty().WithMessage("O nome é obrigatório")\n            .Length(2, 50).WithMessage("O nome deve ter entre 2 e 50 caracteres");\n\n        RuleFor(user => user.Email)\n            .NotEmpty().WithMessage("O email é obrigatório")\n            .EmailAddress().WithMessage("Formato de email inválido");\n\n        RuleFor(user => user.Age)\n            .InclusiveBetween(18, 120).WithMessage("A idade deve estar entre 18 e 120 anos");\n\n        RuleFor(user => user.Password)\n            .NotEmpty().WithMessage("A senha é obrigatória")\n            .MinimumLength(6).WithMessage("A senha deve ter no mínimo 6 caracteres");\n\n        RuleFor(user => user.ConfirmPassword)\n            .Equal(user => user.Password).WithMessage("As senhas não coincidem");\n    }\n}
\n\n

Uso do validador:

\n\n
var validator = new UserValidator();\nvar user = new User\n{\n    Name = "A",\n    Email = "email-invalido",\n    Age = 15,\n    Password = "123",\n    ConfirmPassword = "456"\n};\n\nvar result = validator.Validate(user);\n\nif (!result.IsValid)\n{\n    foreach (var error in result.Errors)\n    {\n        Console.WriteLine($"Propriedade: {error.PropertyName}, Erro: {error.ErrorMessage}");\n    }\n}
\n\n

Principais métodos do FluentValidation

\n\n

Abaixo estão os principais métodos da biblioteca com descrição detalhada e exemplos.

\n\n

1. RuleFor()

\n

O que faz: Define uma regra de validação para uma propriedade específica do objeto. Este é o método principal a partir do qual se inicia

Recommendations