using System;
public class A
{
public virtual void fun(C c)
c.fun(this);
}
public class B:A
public override void fun(C c)
public class C
public void fun(A a)
Console.WriteLine("that was A");
public void fun(B b)
Console.WriteLine("that was B");
public class Program
public static void Main()
A a = new A(), b = new B();
C c = new C();
a.fun(c);
b.fun(c);