que tienen una clase base "padre" de esta manera:llamada "Base-Getter" en Anulación Getter de la Propiedad
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Parent
{
private int parentVirtualInt = -1;
public virtual int VirtualProperty
{
get
{
return parentVirtualInt;
}
set
{
if(parentVirtualInt != value)
{
parentVirtualInt = value;
}
}
}
}
}
y una clase de niño como éste:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Child : Parent
{
public override int VirtualProperty
{
get
{
if(base.VirtualProperty > 0)
{
throw new ApplicationException("Dummy Ex");
}
return base.VirtualProperty;
}
set
{
if(base.VirtualProperty != value)
{
base.VirtualProperty = value;
}
}
}
}
}
Tenga en cuenta que el captador en Child está llamando a getter of Parent (o al menos esto es lo que intento).
Ahora uso la clase "Niño" instanciandola, asignando un valor (digamos 4) a su Propiedad Virtual y luego leyendo la propiedad nuevamente.
Child c = new Child();
c.VirtualProperty = 4;
Console.Out.WriteLine("Child.VirtualProperty: " + c.VirtualProperty);
Cuando ejecuto esto, obviamente obtengo una ApplicationException que dice "Dummy Ex". Pero si me puse un punto de interrupción en la línea
if(base.VirtualProperty > 0)
en Infantil y comprobar el valor de base.VirtualProperty
(colocando el cursor del ratón sobre él) antes de que la excepción se puede (supongo (d)), Ya recibo la excepción. De esto expreso que el enunciado base.VirtualProperty
en "Child-Getter se llama a sí mismo"; mas o menos.
Lo que me gustaría lograr es el mismo comportamiento que consigo cuando cambie la definición de parentVirutalInt
(en los Padres) para proteger y utilizar base.parentVirtualInt
en el Getter del niño en lugar de base.VirtualProperty
. Y todavía no veo por qué esto no está funcionando. ¿Alguien puede arrojar algo de luz sobre esto? Siento que las propiedades anuladas se comportan de manera diferente que los métodos anulados?
Por cierto: estoy haciendo algo muy similar con la subclasificación de una clase sobre la que no tengo ningún control (esta es la razón principal por la que mi "solución alternativa" no es una opción).
Saludos cordiales