[C#] 확장 메서드는 제네릭이 아닌 정적 클래스에 정의해야 합니다. 컴파일러 오류 CS1106 해결 방법

확장 메서드는 제네릭이 아닌 정적 클래스에 정의해야 합니다. 오류를 해결해 보도록 합시다. 우선 확장 메서드는 논-제네릭 스태틱 클래스에서 스태틱 메서드로 정의되어야 합니다. 그러므로 해당 오류는 다음과 같은 문제를 점검하여 해결할 수 있습니다.

확장 메서드는 제네릭이 아닌 정적 클래스에 정의해야 합니다.

  • 논-제네릭 스태틱 클래스 여부 확인하기
  • 스태틱 메서드로 정의되어 있지 않은지 확인하기
  • 확장 메서드가 아닌데 this 키워드를 추가한 것인지 확인하기

확장 메서드는 제네릭이 아닌 정적 클래스에 정의해야 합니다.

다음 예제는 스태틱 클래스가 아닌 것에 확장 메서드를 추가하였을 때 오류가 발생하는 자료입니다.

  • 정적 클래스가 맞는 경우 => 이때에는 클래스를 정적으로 선언합니다.
  • 스태틱 메서드 누락인 경우 => 스태틱 키워드를 명시합니다.
  • 메서드 내에 this 키워드를 실수한 경우 => 확장 메서드가 아닌데 복사하는 과정에서 문제가 되었거나, this키워드의 뜻을 모르는 경우일 것이므로 점검해 주세요.
public class Extensions
{
    //CS1106 : 확장 메서드는 제네릭이 아닌 정적 클래스에 정의해야 합니다.
    public static void ExtensionMethod<T>(this System.String s) { }
}

댓글