다른 클래스로부터 상속을받는 두 클래스가 있고 둘 다에서 같은 메서드/속성 이름을 사용하는 경우 현재 개체가 있는지 여부에 관계없이 해당 메서드를 하위 클래스를 호출하는 방법을 만들 수 있습니까? 다시 기본 클래스로 캐스트합니다. 예를 들어상속 및 메서드/속성 재정의
(생략 외부 부품) :
public class MyBase {
public int GetNumber() {
return 1;
}
}
public class MyDerived : MyBase {
public new int GetNumber() {
return 20;
}
}
MyDervied someVar = new MyDerived();
int derivedVar = someVar.GetNumber(); // 20
MyBase baseVar = (MyBase)someVar;
int baseVar = baseVar.GetNumber(); // 1
내 본능은 파생 클래스에 대한 재정 대신 새를 사용하는 것입니다,하지만 난 "어떤 멤버가 오버라이드 (override) 찾을 수 없습니다"얻을.
아마도 내가 구체적인 예를 게시 했어야합니다. WPF와 ASP.NET에서 동일한 기본 클래스를 사용하려고합니다. WPF는 INotifyPropertyChanged를 사용하므로 실제로는 List에서 ObservableCollection 으로베이스의 반환 유형을 변경하려고합니다. 처음에는 행운을 들이지 않고 기본 클래스의 IList를 사용해 보았습니다. –
Echilon
메서드에서 반환 한 형식을 변경하는 대신 해당 형식을 사용하는 WPF 코드 내에서 데이터를 변환 할 수 있습니다. 반환 유형을 List으로 유지하는 경우 반환 된 값을 ObservableCollection의 생성자로 전달하면됩니다. 좀 더 자세한 조언을 얻기 위해 새로운 질문을하고 싶을 수도 있습니다. –
dahlbyk
감사합니다. ObservableCollection이 필요한 이유는 변경 알림이 필요한 컨트롤의 바인딩 때문입니다. – Echilon