Home Full Site
C# 13: OverloadResolutionPriorityAttribute 지원

C# 13에서부터 OverloadResolutionPriorityAttribute 특성이 도입되었는데, 이는 라이브러리 저자가 기존 오버로드(overload)는 유지하면서도, 새로 추가한 더 나은 오버로드가 우선적으로 선택되도록 컴파일러에 힌트를 주는 특성(attribute)이다. 이 특성은 API 진화 과정에서 호환성을 유지하는데 유용하다.

아래 예제에서 API.Log를 호출할 때, ReadOnlySpan 파라미터를 받는 오버로드 메서드에 [OverloadResolutionPriority(1)] 특성이 설정되어 있는데, 이 특성이 없는 경우 디폴트 우선순위는 0이고, 높은 숫자일수록 우선순위가 높기 때문에, ReadOnlySpan 오버로드 메서드가 우선적으로 선택되어 사용된다. 만약 새로운 Log 메서드를 추가할 경우, [OverloadResolutionPriority(2)]와 같이 더 높은 우선순위를 설정하면 새로 추가된 메서드가 사용될 것이다.


예제

// File: PersonSpec.cs
public partial class Person
{
    public partial string Name { get; set; } // 선언(구현 없음)
}

// File: PersonBody.cs
public partial class Person
{
    private string _name = "";

    public partial string Name   // 구현
    {
        get => _name;
        set => _name = value;
    }
}



© csharpstudy.com