C# Next : Attribute 제네릭 지원

아주~ 오랜 시간 동안 Attribute는 제네릭을 사용할 수 없었습니다.

[Test("Test")]   // CS0404: "TestAttribute<T>" 특성 클래스를 적용할 수 없음 오류
class TestClass
{
}

class TestAttribute<T> : Attribute   // CS0698: 특성 클래스로 제네릭 형식을 파생시킬 수 없음 오류
{
    public T Value { get; }

    public TestAttribute(T value) => Value = value;
}

하지만, roslyn/Language Feature Status.md at main · dotnet/roslyn (github.com)에 의하면, 이미 Visual Studio 2022 17.0 Preview 4에 포함되었다 합니다. 이 버젼 이후로는 위의 코드가 정상 처리 됩니다.

preview langversion으로 C# 10 에 포함될지는 아직은 미지수입니다.

좋아요 4

C#의 기능 변경이 Visual Studio의 버젼을 따라가는 이유가 아마도, Visual Studio의 분석기와 같이 업데이트가 되어서 이렇게 버젼표시를 하는것 같습니다. (Visual Studio 설치에 의해 최신 .NET 프레임워크도 같이 설치되므로)

좋아요 3

오…Generic Attribute라니 신기하군요…
제가 알기로 Attribute는 거의 대부분이 Reflection으로 동적코드인 것으로 알고 있는데 런타임에는 타입이 확정되는 Attribute에 대해서도 되다니…기술의 발전이 대단한 거 같습니다.

좋아요 3