2011-09-08 4 views
2

가능한 중복 : 만 열거에 작동하는 일반적인 방법을 감안할 때
Create Generic method constraining T to an Enum일반 C# 방법 복용 곳 매개 변수로 열거 값

static void <T> method(T enum) where T ????? 
{ 
    // do something with enum... 
} 

어떻게 값 열거 형 값만 허용되도록 T을 제한합니까? 그러나 struct을 사용하여 시도했지만 nullable enum 유형으로 내 메서드를 호출하는 것이 허용되지 않습니다.

답변

4

C#에서는 enum 유형에 대한 일반적인 제한 사항이 불가능하지만 IL에서는 가능합니다. Jon Skeet의 프로젝트 Unconstrained Melody을 살펴보면 일반 메서드를 열거 형으로 제한 할 수 있습니다.

+0

그게 당신이 스스로 할 수 있도록 도서관보다는 IL을 사용하는 방법의 예입니다,하지만 매우 똑같은! – Justin

2

C#에서는 사용할 수 없습니다. 어떤 이유로 나는 C# 스펙이 명시 적으로 제약 조건으로 System.Enum을 금지한다는 것을 모릅니다.

nullable enum이 enum이 아니기 때문에 null 허용 enum을 허용하지 않습니다.

관련 문제