public class DerivedClass1 : BaseClass
public void NonOverridenMethod()
Console.WriteLine("Method called!");
public class DerivedClass2 : BaseClass
public static void CallMethod(BaseClass c, string methodName)
var mi = c.GetType().GetMethod(methodName);
Console.WriteLine("{0} has method {1}, calling it:", c.Name, methodName);
Console.WriteLine("{0} doesn't have method {1}!", c.Name, methodName);
public static void Main()
var a = new DerivedClass1();
var b = new DerivedClass2();
CallMethod(a, "NonOverridenMethod");
CallMethod(b, "NonOverridenMethod");