최근에 일반 인터페이스를 구현하여 일반 서브 클래스를 만들려고했습니다.왜 일반 서브 클래스에서 형식 제약 조건을 다시 선언해야합니까?
public interface IModule<T> where T : DataBean { ..... }
public class Module<T> : IModule<T> where T : DataBean { .... }
이 , 기본 인터페이스에 정의 된대로 내가 T의 어떠한 제한에 의존 할 수 없다 보인다 나는 그들에게 자신을 다시 선언해야합니다.
MSDN 단지 제공 :
제네릭 형식 매개 변수 서브 클래스를 사용하는 경우, 당신은 어떤 제약이 서브 클래스 레벨에서 기본 클래스 수준에서 규정 반복해야합니다. 예제의 경우 파생어 제한
기본 클래스/인터페이스의 제약 조건을 추론 할 수없는 이유는 무엇입니까?
제약 조건을 복사 할 필요가 없으며 부모 제약 유형으로 변환 가능한 항목을 사용하여 하위 항목을보다 전문화 할 수도 있습니다. –
C# 4.0 스펙은 같은 것을 말하고 있습니다 (13.4.3 절). 이유는 없습니다. – Oded
대상 하위 클래스의 제네릭 매개 변수에 기본 클래스의 제네릭 매개 변수에 대한 상충되는 제약 조건이있는 경우? – Paul