본문 바로가기

C#

C# CallerArgumentExpression으로 검증 메시지 자동화

C# 10부터 도입된 CallerArgumentExpression 속성을 활용하면, 메서드 인자 이름을 자동으로 받아와 검사 메시지를 자동화할 수 있습니다. 이 기능 덕분에 코드 가독성과 유지보수성이 크게 향상됩니다.

1. CallerArgumentExpression 기본 개념

CallerArgumentExpression은 메서드의 매개변수에 적용할 수 있는 특성(attribute)으로, 호출한 쪽 인자의 표현식을 문자열로 받을 수 있습니다. 주로 파라미터 유효성 검증 시 사용됩니다.

2. 검증 메시지 자동화 예제

using System;
using System.Runtime.CompilerServices;

public static class Validator
{
    public static void NotNull(object? value, [CallerArgumentExpression("value")] string paramName = null!)
    {
        if (value is null)
            throw new ArgumentNullException(paramName, $"'{paramName}' 값은 null일 수 없습니다.");
    }
}

// 사용 예
class Program
{
    static void Main()
    {
        string? name = null;
        Validator.NotNull(name);  // 예외 발생, paramName 자동 전달
    }
}

3. 장점

- 인자 이름을 수동으로 작성하지 않아도 되어 오타를 방지합니다.

- 유효성 검사 메서드 재사용성이 높아집니다.

- 예외 메시지가 명확해 디버깅이 수월합니다.