Валидация данных в C# с помощью библиотеки FluentValidation

Валидация данных в C# с помощью библиотеки FluentValidation

Валидация данных в C# с помощью библиотеки FluentValidation

Доброго времени суток! В данной статье мы рассмотрим с Вами как можно провести проверку введенных
пользователем данных (валидацию) в C# с помощью библиотеки FluentValidation
.

Итак, для начало необходимо создать консольный проект в среде Visual Studio, а после установить
пакет FluentValidation через менеджер пакетов Nuget
.

Теперь в файл программы Program.cs добавим следующий исходный код:



using System;

using System.Text.RegularExpressions;

using FluentValidation;



namespace C_Sharp_Validation_ConsoleApp

{

    // класс заказа, данные которого мы будем проверять

    // предполагается, что он заполнен из данных, введенных пользователем в некоторой форме

    // форма может быть представлена как веб- так и графическим интерфейсом

    class Order

    {

        // в данные свойства записываются значения пришедшие от пользователя

        public readonly string Id;

        public readonly string State;



        // конструктор класса, тело которого определено через лямбда-выражение

        public Order(string id, string state) => 

            (this.Id, this.State) = (id, state);





        public override string ToString() =>

            $"Order(Id={Id};State={State})";

    }





    // любой пользовательский валидатор должен быть унаследован 

    // от абстрактного класса  AbstractValidator<T>, где T - это тип класса, свойства которого мы будет

    // проверять на соответствие правилам (Rules)

    class OrderValidator : AbstractValidator<Order>

    {

        // правила валидации определяются в конструкторе класса

        public OrderValidator()

        {

            // правило для (RuleFor) свойства Order.Id (идентификатор заказа) - не должно быть пустым значением (NotEmpty)

            // минимальная длина значения должна составлять 10 символов

            // значение должно начинаться с подстроки id********

            RuleFor(order => order.Id).NotEmpty().MinimumLength(10).Matches(new Regex("^id.*"));



            // правило для страны заказа - просто не должно быть null значением

            RuleFor(order => order.State).NotNull();

        }

    }



    internal class Program

    {

        static void Main(string[] args)

        {

            // создаем класс валидатора заказа

            var validator = new OrderValidator();



            // создаем тестовые заказы, первый верный, второй с ошибкой

            var user1 = new Order("id123456789", "USA");

            var user2 = new Order("321221212", "GB");





            // проводим тестирование

            ShowUser(user1, validator);

            ShowUser(user2, validator);

        }





        static void ShowUser(Order order,  OrderValidator validator)

        {

            // здесь бы берем объект заказа и проводим его валидацию

            var res = validator.Validate(order);



            // если после проверки нет ошибок

            if(res.IsValid)

            {

                Console.WriteLine($"Объект ({order}) не содержит ошибок");

            }

            else

            {

                // в противном случае, если есть ошибки  

                // просто выводим их в консоль

                foreach (var item in res.Errors)

                {

                    Console.WriteLine(item);

                }

            }

        }

    }

}







Таким образом, вот так просто с помощью C# библиотеки FluentValidation можно проверить данные на корректность,
причем как видно из примера выше правила валидации добавляются одно за другим в соответствии с шаблоном Fluent Interface
(Текучий интерфейс)
.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий