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;
}
}
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.