내 솔루션에는 C1
, C2
, C3
등 많은 클래스가 모두 상속되는 클래스가 있습니다 일반적인 추상 기본 클래스 CB
에서특정 기본 클래스/인터페이스 (특정 형식이 아닌)에서 파생 된 속성을 구현하도록 클래스를 강제로 구현하는 방법
또한 대응 C
클래스에 대한 데이터 소스로서 작용 D3
등 클래스 D1
, D2
의 수있다 (예컨대 C1
대한 데이터 소스 타입 D1
등의 로컬 속성이다). D
클래스는 모두 공통 추상 기본 클래스 DB
에서 상속하지만 구현은 다릅니다 (상속 된 속성과 상속되지 않는 속성 모두 & 메서드는 C
클래스에서 사용함).
지금, 나는 모든 C
클래스 (즉 CB
에서 파생하는) 이는 "데이터 소스"속성을 구현해야하는 규칙 및 이DB
에서 파생되어야합니다이 속성의 유형을 부과합니다. 내 초기 아이디어
이 작업을 수행했다 :
public abstract class CB
{
protected abstract DB DataSource { get; set; }
etc.
}
그러나, 이것은 C
클래스에서 오버라이드 (override) DataSource
속성이 유일한 유형 DB
하지 DB
에서 파생 된 유형이 될 수 있다는 것을 의미한다.
내 규칙을 어떻게 적용 할 수 있습니까? 이상적으로는 CB
과 DB
은 추상적 인 기본 클래스로 유지됩니다 (각각 C
클래스와 D
클래스가 상속 받기를 바라는 비 추상적 속성과 메소드가 있기 때문에).하지만 필요한 경우 인터페이스로 변환 될 수 있습니다. 그러나 나는 그렇게한다면 똑같은 문제가 있다고 생각합니다.
하지만, 2에 대한 당신이 의미하지 않습니다 : 이제
, {protected override DataSource {get; 세트; }} –
Laurence
C1
는 다음과 같이 정의한다 : C1은 다음과 같이 정의해야합니다. public class C1 : CB