Валидация данных в 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 (Текучий интерфейс).
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.