B
Bill
Hi again,
Ok, so it looks like I can access an ancestor member that is two
levels above mine, if that ancestor has been hidden by means of "new".
But what if it has been overriden with "override"?
How can I access C1.fb() from inside C3.fb()?
Is it possible?
Thanks again,
Bill
// ----------------------------
namespace N0
{
public class C1
{
public int dbg_cnt=0;
public void fa()
{
Debug.Print("{0} - C1.fa()",dbg_cnt++);
}
public virtual void fb()
{
Debug.Print("{0} - C1.fb()",dbg_cnt++);
}
}
public class C2 : C1
{
new public void fa()
{
Debug.Print("{0} - C2.fa()",dbg_cnt++);
}
public override void fb()
{
Debug.Print("{0} - C2.fb()",dbg_cnt++);
}
}
public class C3 : C2
{
new public void fa()
{
Debug.Print("{0} - C3.fa()",dbg_cnt++);
((C1)this).fa(); // Does access C1.fa(). OK.
}
public override void fb()
{
Debug.Print("{0} - C3.fb()",dbg_cnt++);
// How to access C1.fb() from here?
//((C1)this).fb(); // Recursive. Infinite loop! Even though I
up cast it to C1, the override makes it point to C3.fb() (i.e., be
recursive).
//base.fb(); // This accesses C2.fb(), but I cannot access
C1.fb().
}
}
}
Ok, so it looks like I can access an ancestor member that is two
levels above mine, if that ancestor has been hidden by means of "new".
But what if it has been overriden with "override"?
How can I access C1.fb() from inside C3.fb()?
Is it possible?
Thanks again,
Bill
// ----------------------------
namespace N0
{
public class C1
{
public int dbg_cnt=0;
public void fa()
{
Debug.Print("{0} - C1.fa()",dbg_cnt++);
}
public virtual void fb()
{
Debug.Print("{0} - C1.fb()",dbg_cnt++);
}
}
public class C2 : C1
{
new public void fa()
{
Debug.Print("{0} - C2.fa()",dbg_cnt++);
}
public override void fb()
{
Debug.Print("{0} - C2.fb()",dbg_cnt++);
}
}
public class C3 : C2
{
new public void fa()
{
Debug.Print("{0} - C3.fa()",dbg_cnt++);
((C1)this).fa(); // Does access C1.fa(). OK.
}
public override void fb()
{
Debug.Print("{0} - C3.fb()",dbg_cnt++);
// How to access C1.fb() from here?
//((C1)this).fb(); // Recursive. Infinite loop! Even though I
up cast it to C1, the override makes it point to C3.fb() (i.e., be
recursive).
//base.fb(); // This accesses C2.fb(), but I cannot access
C1.fb().
}
}
}