Если у меня есть два класса, один из которых наследуется от другого, и я использую одно и то же имя метода/свойства в обоих случаях, как я могу заставить этот метод вызывать подкласс независимо от того, был ли текущий объект верните его в базовый класс.Наследование и переопределение методов/свойств
Например (посторонние детали опущены):
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
Мой инстинкт должен был бы использовать переопределение вместо нового для производного класса, но я получаю «ни один член не нашел переопределить».
Возможно, я должен был разместить конкретный пример. Я пытаюсь использовать тот же базовый класс в WPF и ASP.NET. WPF использует INotifyPropertyChanged, поэтому я фактически пытаюсь изменить возвращаемый тип базы из списка на ObservableCollection . Первоначально я пытался использовать IList в базовом классе без везения. –
Echilon
Вместо изменения типа, возвращаемого методом, вы можете просто преобразовать данные в код WPF, который его использует. Если вы сохраните возвращаемый тип как List, вы можете просто передать возвращаемое значение в конструктор ObservableCollection. Вы можете задать новый вопрос с более подробной информацией, чтобы получить более конкретный совет. –
dahlbyk
Спасибо. Причина, по которой мне нужен ObservableCollection, связана с привязками к элементам управления, которые нуждаются в уведомлении об изменении. – Echilon