C#에서 열거형 일반 제약 조건 누락 문제 해결
C#에는 열거형 확장 메서드를 만들 때 제한이 발생하는 열거형 일반 제약 조건이 없습니다. 그러나 몇 가지 해결 방법이 있습니다.
권장되는 접근 방식은 UnconstrainedMelody 라이브러리를 사용하는 것입니다. 라이브러리를 사용하면 빌드 후 프로세스 중에 UnconstrainedMelody가 where T : struct, IEnumConstraint
로 변환하는 where T : struct, System.Enum
과 같은 "의사" 제약 조건을 지정할 수 있습니다.
또 다른 해결 방법은 필요한 기능을 수동으로 구현하는 것입니다. 예를 들어 다음 IsSet
메서드를 고려해 보세요.
<code class="language-csharp">public static bool IsSet<T>(this T input, T matchTo) where T : struct // 不是枚举约束 { return (input & matchTo) != 0; }</code>
이 메소드가 여러 플래그와 함께 호출되면 단일 플래그의 존재 여부만 확인하므로 원하는 동작을 제공하지 못할 수 있습니다.
이 문제를 해결하려면 추가 방법을 정의할 수 있습니다.
<code class="language-csharp">public static bool HasFlags<T>(this T input, params T[] matchTo) where T : struct // 不是枚举约束 { foreach (var flag in matchTo) { if ((input & flag) == 0) return false; } return true; }</code>
이 메서드는 지정된 플래그를 반복하고 모든 플래그가 설정된 경우에만 true를 반환합니다.
명명 규칙
이러한 메소드에 대한 적절한 명명 규칙은 선호도에 따라 다릅니다. 가능한 옵션은 다음과 같습니다.
최종 결정은 구체적인 상황과 방법의 용도에 따라 달라질 수 있습니다.
위 내용은 C#에서 Enum 일반 제약 조건이 없는 문제를 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!