DEV Community

Juarez Júnior
Juarez Júnior

Posted on

Validação Simples e Fluente com FluentValidation

O FluentValidation é uma biblioteca que permite a validação de objetos de forma fluente e expressiva. Com o FluentValidation, você pode criar regras de validação separadas da lógica de negócios, mantendo seu código mais limpo e organizado. A biblioteca é extensível e fácil de usar, suportando diversas formas de validação, como checagens de propriedades obrigatórias, tamanhos, valores, entre outras. Neste exemplo, veremos como configurar e usar o FluentValidation para validar uma classe de dados simples.

Bibliotecas:

Para usar a biblioteca FluentValidation, instale o seguinte pacote NuGet no seu projeto:

Install-Package FluentValidation
Enter fullscreen mode Exit fullscreen mode

Código de Exemplo:

using FluentValidation;
using System;

public class Produto
{
    public string Nome { get; set; }
    public decimal Preco { get; set; }
}

public class ProdutoValidator : AbstractValidator<Produto>
{
    public ProdutoValidator()
    {
        // Definindo regras de validação
        RuleFor(p => p.Nome)
            .NotEmpty().WithMessage("O nome do produto é obrigatório.")
            .Length(3, 50).WithMessage("O nome do produto deve ter entre 3 e 50 caracteres.");

        RuleFor(p => p.Preco)
            .GreaterThan(0).WithMessage("O preço deve ser maior que zero.");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Criando um produto de exemplo
        var produto = new Produto { Nome = "Laptop", Preco = -10 };

        // Validando o produto
        var validator = new ProdutoValidator();
        var resultados = validator.Validate(produto);

        if (!resultados.IsValid)
        {
            foreach (var erro in resultados.Errors)
            {
                Console.WriteLine($"Erro: {erro.ErrorMessage}");
            }
        }
        else
        {
            Console.WriteLine("Produto válido!");
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, criamos uma classe Produto com as propriedades Nome e Preco. A classe ProdutoValidator, que herda de AbstractValidator, define as regras de validação para o objeto Produto. Validamos que o Nome não pode ser vazio e deve ter entre 3 e 50 caracteres, e que o Preco deve ser maior que zero. No método Main, criamos um objeto Produto com um valor de preço inválido e, em seguida, utilizamos o ProdutoValidator para validar o objeto. Se houver erros de validação, eles serão exibidos no console.

Conclusão:

O FluentValidation é uma excelente ferramenta para validar objetos de forma fluente e clara. Ele permite separar as regras de validação da lógica de negócios, o que resulta em um código mais organizado e de fácil manutenção. Sua sintaxe simples e extensível facilita a criação de validações poderosas e flexíveis para diversas situações.

Código fonte: GitHub

Top comments (0)