확장 메서드 '<methodname>'의 형식 제약 조건을 충족할 수 없습니다.
업데이트: 2007년 11월
Extension method '<methodname>' has type constraints that can never be satisfied
이 메서드의 형식 매개 변수는 해당 상호 작용 방식으로 인해 충족될 수 없습니다. 다음과 같은 확장 메서드를 예로 들 수 있습니다.
'' Not valid.
'<Extension()> _
'Sub extensionExample(Of T As U, U)(ByVal para1 As T, ByVal para2 As U)
'End Sub
이 메서드는 확장 메서드이기 때문에 컴파일러에서는 메서드 선언의 첫 번째 매개 변수인 para1과 해당 매개 변수를 통해 전달되는 인수만 사용하여 이 메서드가 확장하는 데이터 형식을 결정할 수 있어야 합니다. para1 as T와 같이 첫 번째 매개 변수가 제네릭 형식 매개 변수를 참조하는 경우에는 제네릭 매개 변수의 제약 조건 때문에 이 메서드가 적용되는 형식 집합이 제한됩니다.
확장 메서드를 적용할 수 있는지 여부는 첫 번째 매개 변수의 인수, 즉 다음 코드의 arg1에 따라 결정됩니다.
'' Not valid.
'arg1.extensionExample(arg2)
첫 번째 인수 arg1만으로 첫 번째 매개 변수 para1이 참조하는 모든 제네릭 형식 매개 변수의 제약 조건을 확인할 수 있어야 합니다. extensionExample의 경우에는 확장되는 형식 집합을 첫 번째 매개 변수만으로 확인할 수 없습니다. 형식 매개 변수 T는 para1에서 참조하지 않는 형식 매개 변수 U의 제약을 받기 때문에 arg1을 통해 유추될 수 없습니다. 따라서 가능한 모든 형식에 대해 메서드를 적용할 수 있는지 여부를 확인할 수 없으므로 결과적으로 메서드를 호출할 수 없습니다.
오류 ID: BC36561
이 오류를 해결하려면
- 형식 선언을 변경하여 형식 간의 상호 의존 관계를 없앱니다.