2016-07-25 3 views
0

나는 추상 제네릭 클래스를문제 상속 추상 제네릭 클래스

There is not argument that corresponds to the required formal parameter '_Data' of 'A<T>.A(IEnumerable<T>)' 
in the 'B' class. 
+2

에서 IEnumberable<T>을 전달하여 기본 클래스 생성자로 전화를 걸 제안? 이것은 컴파일되지 않습니다! – user3185569

+0

이것은 생성자입니다 –

+0

그래, 여기에 직접 코드를 입력했습니다. 그것은 타이핑 실수입니다. 어쨌든 해결했습니다 –

답변

3

당신은 A이 아니라 A<T>을 상속 받아야합니다 :

public A(_Data)은 생성자가 아니므로 원하는 것으로 가정합니다. 대신 이 필요합니다.

A에서 호출 할 수있는 B의 생성자를 만들어야합니다. 이 오류에 적혀 B. 올바른 생성자를 변경하려면 제공하지 않았기 때문에

public class B<T> : A<T> where T : class, new() 
{ 
    public B<T>(IEnumerable<T> data) : base(data) { ... } 
} 
+0

내 원래 코드는 좀 더 복잡하므로 여기에 직접 입력했습니다. 내가 상속 한 A

+1

그런 다음이 질문을 게시하기 전에 검증 가능한 예제를 제공했는지 확인하십시오. 또는 적절하게 편집하십시오. – HimBromBeere

1

, 그것은 기본 클래스를 만들 수 없습니다 : 그래서 인수로 IEnumerable<T>B의 매개 변수가 A에서 생성자 또는 하나를 정의하거나 args를 넘길 경우

public class B<T> : A<T> where T : class, new(){ 
    public B(IEnumerable<T> data):base(data) { 
    } 
} 

그렇지 않으면 생성자에서 데이터를 새로 작성하여 기본으로 전달하십시오.

1

어느 귀하의 기본 클래스 또는 다른 사람으로 공공 매개 변수가없는 생성자를 제공는`공공의 A (_data)`를 무엇 파생 클래스