Why do you not want to call Class A's 'base.fun();' directly in Class 'B, which you can do whether or not you make A's 'fun virtual ?
Remember that a function marked virtual has the
option to provide an implementation.
public class A
{
public virtual void fun() { Console.WriteLine("Class A fun");}
}
public class B: A
{
public void fun()
{
base.fun();
Console.WriteLine("Class B fun");
}
}
No use of 'override, or 'new, required, no compiler warnings.
You are never going to get
automatic calling of inherited ancestor methods because .NET does not implement event-bubbling as part of its inheritance facility.