[C# NuGet] C# 유효성 검증 FluentValidation NuGet 사용 방법
- C#/C# 문법
- 2022. 1. 5. 21:33
참조
- https://www.nuget.org/packages/FluentValidation/
- https://docs.fluentvalidation.net/en/latest/installation.html
소개
- DDD(도메인 주도 설계) 학습을 통해 유효성 체크는 매우 기본이면서 중요하다는 점을 알게 되었습니다.
- C# 에서 FluentValidation NuGet을 이용하여 유효성 체크를 보다 유연하고 정확하게 할 수 있다는 정보를 알게 되었습니다.
- FluentValidation NuGet에 대해 간단히 정리해 보았습니다.
FluentValidation NuGet 이란?
- FluentValidation은 강력한 형식의 유효성 검사 규칙을 빌드하기 위한 .NET 라이브러리 입니다.
- Fluent 인터페이스와 람다식을 사용하여 유효성 검사 규칙을 제공합니다.
- 유효성 검사 규칙은 깨끗한 도메인 코드를 유지 관리하고 더 통합하는데 도움이 됩니다.
- 또한, 검증 로직을 찾을 수 있는 위치를 제공합니다.
FluentValidation 특징
- FluentValidation에는 null 검사, 빈 문자열 유효성 검사, 최대 길이 및 최소 길이와 같은 수 많은 기본 제공 유효성 검사가 있습니다.
- 또한, 속성 이름을 기반으로 유효성 검사 메시지를 사용자가 지정하고 현지화, 비동기 유효성 검사 등을 기반으로 메시지를 제공하는 사용자 지정 유효성 검사도 지원합니다.
FluentValidation 설치 방법
- FluentValidation NuGet Package 설치 방법은 다음과 같습니다.
명령어 설치
Install-Package FluentValidation
Visual Studio 설치
- 도구 -> NuGet 패키지 관리자 -> 솔루션용 NuGet 패키지 관리 옵션에 들어가
FluentValidation
입력 후, NuGet을 설치 진행합니다.
첫 번째 유효성 검사기 만들기
- 앞서 FluentValidation NuGet Package를 설치 하였습니다.
- FluentValidation 을 이용하여 첫 번째 유효성 검사기를 만들어 보도록 하겠습니다.
- 특정 개체에 대한 유효성 검사 규칙 집합을 정의하려면
AbstractValidation<T>
에서 상속하는 클래스를 생성해야 합니다. - 여기서
T
는 유효성을 검사하려는 클래스 유형입니다. - 예를들어 Customer 클래스가 있다고 가정합니다.
public class Customer
{
public int Id { get; set; }
public string Surname { get; set; }
public string Forename { get; set; }
public decimal Discount { get; set; }
public string Address { get; set; }
}
AbstractValidator<Customer>
상속받아 해당 클래스에 대한 유효성 검사 규칙 집합을 정의합니다.- 유효성 검사 규칙 자체는 유효성 검사기 클래스의 생성자에 정의되어야 합니다.
- 특정 속성에 대한 유효성 검사 규칙을 지정하려면 유효성
RuleFor
람다식을 이용하여 메서드를 호출합니다. - 예를들어
Surname
속성이 null이 아닌지 확인하기 위해 유효성 검사기 클래스는 아래와 같습니다.
using FluentValidation;
public class CustomerValidator : AbstractValidator<Customer>
{
public CustomerValidator()
{
RuleFor(customer => customer.Surname).NotNull();
}
}
- 유효성 검사기를 실행하려면 유효성 검사기 객체를 인스턴스화 하고
Validate
메서드를 호출하여 유효성 검사할 객체를 전달합니다.
Customer customer = new Customer();
CustomerValidator validator = new CustomerValidator();
ValidationResult result = validator.Validate(customer);
Validate
메서드는 ValidationResult 객체를 반환합니다. 여기에는 두 가지 속성이 포함됩니다.- IsValid : 유효성 검사가 성공했는지 여부를 나타내는 속성
- Errors - 유효성 검사 실패에 대한 세부 정보를 포함하는 ValidationFailure 객체 컬렉션 입니다.
FluentValidation 예제 코드
- 위에서 작성한 내용의 전체 소스코드입니다.
using FluentValidation;
using FluentValidation.Results;
using System;
namespace interfaceTest
{
class Program
{
static void Main(string[] args)
{
Customer customer = new Customer();
CustomerValidator validator = new CustomerValidator();
ValidationResult results = validator.Validate(customer);
if (!results.IsValid)
{
foreach (var failure in results.Errors)
{
Console.WriteLine("Property " + failure.PropertyName + " failed validation. Error was: " + failure.ErrorMessage);
}
}
}
}
public class CustomerValidator : AbstractValidator<Customer>
{
public CustomerValidator()
{
RuleFor(customer => customer.Surname).NotNull();
}
}
public class Customer
{
public int Id { get; set; }
public string Surname { get; set; }
public string Forename { get; set; }
public decimal Discount { get; set; }
public string Address { get; set; }
}
}
실행 결과
- 현재 Customer 객체의 속성인 Surname 이 아무것도 입력되지 않았기 때문에 유효성 검사에서 위배되었고 다음과 같이 에러 메시지가 출력된 것을 확인할 수 있습니다.
Property Surname failed validation. Error was: 'Surname'은(는) 반드시 입력해야 합니다.
정리
- FluentValidation NuGet Package를 이용하여 보다 유연하고 정확한 유효성 검증을 진행할 수 있습니다.
- FluentValidation 가이드 해당 링크를 통해 보다 자세한 내용이 있으니 참고하면 좋을 듯 합니다.
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] ConcurrentBag - 소개 및 예제 (0) | 2022.01.10 |
---|---|
[C# 문법] C# 문자열 보간 이용하여 앞에 숫자 0 붙이는 방법 (0) | 2022.01.10 |
[C# 벤치마크] IntroArrayParam 사용방법 (0) | 2021.12.29 |
[C# 벤치마크] IntroCategories 사용방법 (0) | 2021.12.29 |
[C# 문법] 파일 경로에서 디렉토리 경로 가져오기 (0) | 2021.12.29 |
이 글을 공유하기