제 클래스 구조를 살펴보십시오. 나는 가능한 한 상속으로 더 즐겁게하고 싶습니다.C# - 상속 고급
public abstract class PolicyDetailed<T> : PolicyDetailed where T : DataContainer
{
internal new abstract T GetActiveAsset();
}
이 마지막으로 특정 정책 클래스가 :
public abstract class PolicyDetailed
{
internal abstract DataContainer GetActiveAsset();
}
다음 일반 또 다른 추상 클래스가 존재한다 : 기본 추상 클래스가
첫째. AccidentContainer는 DataContainer에서 상속 :
'PolicyAccident' does not implement inherited abstract member 'PolicyDetailed.GetActiveAsset()'
내가 그것을 얻이 여기에 무엇을 사용해야 수정 확실하지 않다 : 컴파일시
public class PolicyAccident : PolicyDetailed<AccidentContainer>
{
internal override AccidentContainer GetActiveAsset()
{
return null;
}
}
나는 다음과 같은 오류가 발생합니다. 어쩌면 내가 성취하고자하는 바를 적어야 할 것입니다. 여러 유형의 DataContainer (AccidentContainer, TravelContainer 등)를 PolicyDetailed에서 상속하는 다른 유형의 정책 객체 (예 : PolicyAccident, PolicyTravel 등)가 있습니다. 나는 그들 각각에 대해 "GetActiveAsset"메서드를 호출하고 그들의 특정 타입을 알지 않고 PolicyDetailed를 통해 그들을 참조하려고한다. 동시에 각 클래스가 특정 Datacontainer 하위 클래스를 반환하도록합니다. 그게 가능하니?
특정 컨테이너 유형이 특정 정책 유형을 반환한다고 선언하는 것이 중요합니까? 당신은 반환 된 객체를 PolicyDetailed로 참조하기를 원한다고 말하면 어쨌든 특정한 정보를 잃어버린 것입니다. (AccidentContainer _IS_ a DataContainer를 기억하고, 따라서 서명을 전혀 변경하지 않고 반환 형식 DataContainer가있는 메서드에서 AccidentContainer를 반환 할 수 있습니다. – olagjo
코드의 다른 부분에서 필요합니다. 특정 유형의 정책을 참조하고 해당 부분을 사용해야합니다. 보안 컨테이너. 두 가지 방법을 사용하는 것을 고려해 볼 수 있습니다 - 하나는 DataContainer 객체를 반환하고, 두 번째는 특정 컨테이너를 반환 할 수 있습니다 (하지만 어색함을 느낍니다 :() – Rummy