Как правильно реализовать метод потомка для вызова метода предка? Здравствуйте, имеется следующий набор классов:class _Foo
{
public string FooField;
}
class Foo //_Foo
{
public string FooField;

public _Foo ToType()
{
var r = new _Foo();
r.FooField = this.FooField;
return r;
}
}
class _Bar : _Foo
{
public string BarField;
}
class Bar : Foo //_Bar
{
public string BarField;

public _Bar ToType()
{
var r = new _Bar();
r.BarField = this.BarField;
/// ??????
}
}
Класс Foo является "отображением" для класса _Foo.
Класс Bar является "отображением" для класса _Bar.
Класс Foo содержит метод ToType() для "привидения" к классу _Foo;
Но класс Bar является наследником класса Foo и он должен тоже корректно приводиться к классу _Bar.
Подскажите пожалуйста как в классе Bar реализовать метод ToType() правильно.

21 Авг 2019 в 07:04
248 +1
0
Ответы
1

Для правильной реализации метода ToType() в классе Bar, который будет вызывать метод ToType() из класса Foo (предка), можно использовать ключевое слово base:

class Bar : Foo //_Bar
{
public string BarField;
public _Bar ToType()
{
var r = base.ToType() as _Bar; // вызываем метод ToType() из класса Foo и приводим результат к типу _Bar
r.BarField = this.BarField;
return r;
}
}

Таким образом, метод ToType() в классе Bar сначала вызывает метод ToType() из класса Foo с помощью base.ToType(), затем корректно устанавливает поле BarField и возвращает объект типа _Bar.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир