Dado el siguiente código, ¿hay alguna forma de que pueda llamar a la versión del método X de la clase A?¿Cómo puedo llamar a la 'implementación base' de un método virtual anulado?
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...
}
(Hola Sólo para que conste, alguien suprime la etiqueta del 'estúpida-truco que he añadido, y entonces alguien De lo contrario, eliminé el comentario que lo señalaba, haciendo que pareciera que realmente quiero/necesito hacer esto. Sería útil recibir notificaciones de las ediciones tontas que la gente parece querer hacer en SO.) – mackenir
Llamando a AX() desde el interior B es la única situación en la que incluso puedo ver que necesitas llamarla una vez desautorizada. Supongamos que tiene un método de copia con los miembros de la clase base, luego anule para agregar funcionalidad de copia para los miembros nuevos y llame a base.copy() adentro para que todo se copie. – steviesama
Interesante, ¿hubiera pensado que se podría lograr a través de la reflexión? – mhand