Как правильно реализовать метод потомка для вызова метода предка? Здравствуйте, имеется следующий набор классов: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() правильно.
Для правильной реализации метода 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.
Для правильной реализации метода 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.