DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited 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

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay