하위 클래스 특정 데이터를 저장해야하는 배열을 상속하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/31088

문제

다음과 유사한 상속 계층을 설정하려고합니다. 라코 디스

MotorcycleAxle 개체는 Motorcycle 개체의 Axles 배열에만 저장하고 CarAxle 개체는 Car 개체의 Axles 배열에 저장하고 싶습니다.문제는 하위 클래스의 배열을 재정 의하여 둘 중 하나를 강제로 실행할 수있는 방법이 없다는 것입니다.이상적으로는 다음과 같은 것이 Motorcycle 클래스에 유효합니다. 라코 디스

하지만 재정의 할 때 유형이 일치해야합니다.이 아키텍처를 어떻게 지원할 수 있습니까?Axles 멤버에 액세스 할 때마다 런타임 유형 검사 및 캐스팅을 많이 수행해야합니까?강력한 타이핑과 다형성의 이점을 잃기 시작하기 때문에 런타임 유형 검사를 추가하는 것을 좋아하지 않습니다.WheelAttached 및 Left / RightWheelAttached 속성은 유형에 따라 다르기 때문에이 시나리오에서는 최소한 몇 가지 런타임 검사가 있어야하지만 최소화하고 싶습니다.

도움이 되었습니까?

해결책

더 많은 제네릭 사용 라코 디스

다른 팁

두 가지 옵션이 떠 오릅니다.1은 제네릭을 사용합니다. 라코 디스

두 번째는 섀도 잉을 사용하며 이는 다음과 같은 속성이 있다고 가정합니다. 라코 디스

섀도 잉의 문제는 일반적인 목록이 있다는 것입니다.불행히도 CarAxle 만 포함하도록 목록을 제한 할 수는 없습니다.또한 상속 체인이 있어도 List 을 List 로 캐스팅 할 수 없습니다.각 개체를 새 List로 캐스팅해야합니다 (LINQ에서는 훨씬 쉬워 짐).

제네릭을 직접 찾아 보겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top