Учитывая следующий код, есть ли способ, которым я могу назвать версию класса X метода X?Как я могу назвать «базовую реализацию» переопределенного виртуального метода?
class A
{
virtual void X() { Console.WriteLine("x"); }
}
class B : A
{
override void X() { Console.WriteLine("y"); }
}
class Program
{
static void Main()
{
A b = new B();
// Call A.X somehow, not B.X...
}
(Привет Просто для записи, кто-то удалил тег в «тупых-трик, что я добавил, а потом кто-то else удалил комментарий, указав его, заставив его выглядеть так, как будто я действительно хочу/должен это сделать. Было бы полезно получить уведомление о глупых изменениях, которые люди, похоже, хотят сделать на SO.) – mackenir
Вызов AX() изнутри B это единственная ситуация, когда я даже вижу, что вам нужно называть ее когда-то чрезмерно. Скажем, у вас был метод копирования с членами базового класса, затем переопределить его, чтобы добавить функции копирования для новых членов и вызвать base.copy() внутри, чтобы все копировались. – steviesama
Интересно, я бы подумал, что это может быть достигнуто путем отражения? – mhand