두 클래스를 작성하려고하는데 '부모와 자식'이라고 부릅니다.제네릭 형식을 반환하는 상속 함수
부모는 다른 키로 유형과 함께 KeyValuePair을 반환하는이 함수를 재정의 할 수있는 아이 인 의도를 가진 (일종의) 제네릭 형식
public abstract class Parent
{
public abstract KeyValuePair<K,V> foo(someInputs);
}
을 반환하는 함수를 정의하는 추상 클래스입니다 값.
public abstract class Child
{
public override KeyValuePair<string,int> foo(someInputs)
{
return(new KeyValuePair<string,int>(someInput1,someInput2);
}
}
이 함수는 KeyValuePair를 반환 할 필요가 있다고 (미래의 나) 아동을 개발하는 사용자에게 통신의 목표를 달성하지만, 내가 원하는대로 KeyValuePair 무료로 사용할 수 오전.
public abstract class Parent<K,V>
와 추상적 인 기능까지 K와 V를 전달 그것은이 또한 클래스는 일반적인 만드는 것입니다 달성 할 수있는 유일한 방법을 보인다 불행하게도하지만
.
이것은 자식을 작성할 때 클래스 (현재는 일반)와 함수 반환에 대해 동일한 유형을 정의해야 함을 의미합니다. 일치하지 않으면 컴파일러가 자신을 푸시합니다 (좋은 이유가 있음).
클래스를 일반화하지 않고 이러한 "준 일반"반환 유형을 사용할 수 있습니까?
'부모'일반을 만드는 것이 왜 중요한지는 분명하지 않습니다. 왜 그 일을 피하려고하는거야? –
어떻게해야할까요? 어쨌든'KeyValuePair '을 제네릭 메소드/클래스 외부에 가질 수 없습니다. 따라서 부모 참조에 'foo'를 호출 할 수 없습니다. 그럼 기본 클래스에 넣는 이유는 무엇입니까? –
Blorgbeard