다음 오류는 컴파일 중에 원본 생성기 또는 인터셉터가 로드될 때 생성됩니다.
- CS9137: '인터셉터' 실험 기능을 사용할 수 없습니다.
<Features>InterceptorsPreview<Features>
을(를) 프로젝트에 추가합니다. - CS9138: 메서드 또는 포함하는 형식에 형식 매개 변수가 있으므로 인터셉터로 사용할 수 없습니다.
- CS9139: 인터셉트할 수 없음: 컴파일에 경로가 있는 파일이 없습니다.
- CS9140: 인터셉트할 수 없음: 컴파일에 경로가 있는 파일이 없습니다. 다른 경로를 사용하시겠습니까?
- CS9141: 제공된 줄 및 문자 번호는 가로챌 수 있는 메서드 이름이 아니라 토큰을 참조합니다.
- CS9142: 지정된 파일에는 제공된 줄 번호
m
미만인n
줄이 있습니다. - CS9143: 지정된 줄은
c
자 길이이며 제공된 문자 번호n
보다 작습니다. - CS9144: 서명이 일치하지 않으므로 인터셉터
V
(으)로 메서드M
을(를) 인터셉트할 수 없습니다. - CS9145: 인터셉트할 수 없음: 경로가 매핑되지 않았습니다. 매핑된 경로가 필요합니다.
- CS9146: 인터셉터 메서드는 일반 멤버 메서드여야 합니다.
- CS9147: 제공된 줄 및 문자 번호는 토큰의 시작을 참조하지 않습니다. 줄
n
및 문자c
을(를) 사용하시겠습니까? - CS9148: 인터셉터에는
this
매개 변수 일치 매개 변수가 있어야 합니다. - CS9149: 메서드에
this
매개 변수가 없으므로 인터셉터에는this
매개 변수가 없어야 합니다. - CS9150: 인터셉터에
null
파일 경로가 있을 수 없습니다. - CS9151: 가능한 메서드 이름
M
이(가) 호출되지 않으므로 인터셉트할 수 없습니다. - CS9152: 컴파일의 여러 파일에 이 경로가 있으므로 이 경로가 있는 파일의 호출을 인터셉트할 수 없습니다.
- CS9153: 표시된 호출이 여러 번 인터셉트됩니다.
- CS9155:
V
내에서 액세스할 수 없으므로M
호출을 인터셉트할 수 없습니다. - CS9156: '범위 지정' 한정자 또는
[UnscopedRef]
특성의 차이로 인해V
(으)로M
을(를) 인터셉트할 수 없습니다. - CS9157:
InterceptsLocationAttribute
에 제공된 줄 및 문자 번호는 양수여야 합니다. - CS9160: nameof 연산자를 인터셉트할 수 없습니다.
- CS9161: 인터셉터를
UnmanagedCallersOnlyAttribute
(으)로 표시할 수 없습니다. - CS9177: 인터셉터는 제네릭이 아니거나 일치하는 arity가 있어야 합니다.
- CS9178: 일치하려면 메서드가 제네릭이 아니어야 합니다.
- CS9206: 전역 네임스페이스에서 인터셉터를 선언할 수 없습니다.
- CS9207: 메서드가 일반 멤버 메서드의 호출이 아니므로 인터셉트할 수 없습니다.
다음 경고는 컴파일 중에 원본 생성기 또는 인터셉터가 로드될 때 생성됩니다.
- CS9154: 인터셉터
V
을(를) 사용하여M
호출을 인터셉트하지만 서명이 일치하지 않습니다. - CS9158: 반환 형식에서 참조 형식의 Null 허용 여부가 인터셉트 가능한 메서드와 일치하지 않습니다.
- CS9159: 매개 변수 형식의 참조 형식의 Null 허용 여부가 인터셉트 가능한 메서드와 일치하지 않습니다.
이러한 오류 및 경고는 다음 테마를 따릅니다.
이 오류는 실험적 기능을 사용하도록 설정해야 했음을 나타냅니다.
- CS9137: '인터셉터' 실험 기능을 사용할 수 없습니다.
<Features>InterceptorsPreview<Features>
을(를) 프로젝트에 추가합니다.
C# 12에서는 인터셉터가 실험적입니다. 인터셉터는 향후 릴리스에서 호환성이 손상되거나 제거될 수 있습니다. 따라서 프로덕션 또는 릴리스된 애플리케이션에는 권장되지 않습니다.
인터셉터를 사용하려면 프로젝트 파일에서 <Features>InterceptorsPreview<Features>
요소를 설정해야 합니다. 이 플래그가 없으면 다른 C# 12 기능을 사용하는 경우에도 인터셉터가 비활성화됩니다.
다음 오류는 인터셉터 메서드와 인터셉트 가능한 메서드 간의 불일치 또는 인터셉터 메서드 선언과 관련된 규칙 위반을 나타냅니다.
- CS9144: 서명이 일치하지 않으므로 인터셉터
V
(으)로 메서드M
을(를) 인터셉트할 수 없습니다. - CS9148: 인터셉터에는
this
매개 변수 일치 매개 변수가 있어야 합니다. - CS9149: 메서드에
this
매개 변수가 없으므로 인터셉터에는this
매개 변수가 없어야 합니다. - CS9155:
V
내에서 액세스할 수 없으므로M
호출을 인터셉트할 수 없습니다. - CS9156: '범위 지정' 한정자 또는
[UnscopedRef]
특성의 차이로 인해V
(으)로M
을(를) 인터셉트할 수 없습니다. - CS9177]: 인터셉터는 제네릭이 아니거나 일치하는 arity가 있어야 합니다.
- CS9178: 일치하려면 메서드가 제네릭이 아니어야 합니다.
또한 다음 경고는 인터셉터 및 인터셉트 가능한 메서드의 서명이 일치하지 않음을 나타냅니다.
- CS9154: 인터셉터
V
을(를) 사용하여M
호출을 인터셉트하지만 서명이 일치하지 않습니다. - CS9158: 반환 형식에서 참조 형식의 Null 허용 여부가 인터셉트 가능한 메서드와 일치하지 않습니다.
- CS9159: 매개 변수 형식의 참조 형식의 Null 허용 여부가 인터셉트 가능한 메서드와 일치하지 않습니다.
인터셉터 메서드는 인터셉트 가능한 메서드와 호환되어야 합니다. 다음 규칙을 따라야 합니다.
- 인스턴스 메서드는 정적 메서드가 아니라 인스턴스 메서드를 인터셉트할 수 있습니다. 마찬가지로 정적 메서드는 인스턴스 메서드가 아닌 정적 메서드만 인터셉트할 수 있습니다.
- 인터셉터 및 인터셉트 가능한 메서드에 대한 메서드 시그니처는 일치해야 합니다. 동일한 한정자를 가진 동일한 매개 변수가 동일한 순서로 있어야 합니다. 반환 형식도 일치해야 합니다.
- ref safe 컨텍스트가 일치해야 합니다. 즉, 해당
ref
매개변수는scoped
이나scoped
이 아니어야 합니다. - 두 메서드는 모두 제네릭이 아니거나 둘 다 동일한 수의 형식 매개 변수를 가져야 합니다.
인터셉터에는 인터셉터 메서드와 인터셉터 메서드를 매핑하는 원본 매핑이 필요합니다. 다음 오류는 매핑과 관련된 문제를 나타냅니다.
- CS9139: 인터셉트할 수 없음: 컴파일에 경로가 있는 파일이 없습니다.
- CS9140: 인터셉트할 수 없음: 컴파일에 경로가 있는 파일이 없습니다. 다른 경로를 사용하시겠습니까?
- CS9141: 제공된 줄 및 문자 번호는 가로챌 수 있는 메서드 이름이 아니라 토큰을 참조합니다.
- CS9142: 지정된 파일에는 제공된 줄 번호
m
미만인n
줄이 있습니다. - CS9143: 지정된 줄은
c
자 길이이며 제공된 문자 번호n
보다 작습니다. - CS9145: 인터셉트할 수 없음: 경로가 매핑되지 않았습니다. 매핑된 경로가 필요합니다.
- CS9147: 제공된 줄 및 문자 번호는 토큰의 시작을 참조하지 않습니다. 줄
n
및 문자c
을(를) 사용하시겠습니까? - CS9150: 인터셉터에
null
파일 경로가 있을 수 없습니다. - CS9157:
InterceptsLocationAttribute
에 제공된 줄 및 문자 번호는 양수여야 합니다.
인터셉터에서 인터셉트 가능한 메서드의 소스 코드에 있는 위치를 지정합니다. [InterceptsLocation]
특성을 적용하여 위치를 지정합니다. 인터셉터를 삽입해야 하는 다시 매핑된 소스 파일에서 줄 및 열 번호를 지정합니다. 이러한 오류는 특성 또는 위치에 있는 항목이 유효한 인터셉트 가능한 메서드의 위치와 일치하지 않음을 나타냅니다. 이 특성의 형식 및 값에 대한 자세한 내용은 기능 사양을 참조하세요.
이러한 오류는 인터셉터에 대한 다른 제한 사항을 나타냅니다.
- CS9138: 메서드 또는 포함하는 형식에 형식 매개 변수가 있으므로 인터셉터로 사용할 수 없습니다.
- CS9146: 인터셉터 메서드는 일반 멤버 메서드여야 합니다.
- CS9151: 가능한 메서드 이름
M
이(가) 호출되지 않으므로 인터셉트할 수 없습니다. - CS9152: 컴파일의 여러 파일에 이 경로가 있으므로 이 경로가 있는 파일의 호출을 인터셉트할 수 없습니다.
- CS9153: 표시된 호출이 여러 번 인터셉트됩니다.
- CS9160: nameof 연산자를 인터셉트할 수 없습니다.
- CS9161: 인터셉터를
UnmanagedCallersOnlyAttribute
(으)로 표시할 수 없습니다. - CS9206: 전역 네임스페이스에서 인터셉터를 선언할 수 없습니다.
- CS9207: 메서드가 일반 멤버 메서드의 호출이 아니므로 인터셉트할 수 없습니다.
이러한 오류는 인터셉터 메서드가 인터셉터 규칙 중 하나를 위반함을 나타냅니다.
- 인터셉터는 제네릭 메서드 또는 제네릭 클래스의 멤버일 수 없습니다.
- 인터셉터는 일반 멤버여야 합니다. 연산자, 인스턴스 또는 정적 생성자 또는 종료자일 수 없습니다.
- 인터셉트할 수 있는 메서드는 일반 멤버여야 합니다. 연산자, 인스턴스 또는 정적 생성자, 종료자 또는 대리자 호출이 될 수 없습니다.
- 호출되지 않는 인터셉트 가능한 메서드는 인터셉트할 수 없습니다.
- 인터셉트 가능한 메서드는 한 번에 인터셉트할 수 있습니다.
- 인터셉터는 비관리형 호출자로 제한되는 메서드일 수 없습니다.
- 인터셉터는 네임스페이스에 포함되어야 합니다.
.NET 피드백
.NET 은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.