.NET Fiddle

CSharp · Console

/Program.cs

using System;
					
public class BaseClass
{
	public string Name;
}

public class DerivedClass1 : BaseClass
{
	public DerivedClass1()
	{
		Name = "DerivedClass1";
	}
	public void NonOverridenMethod()
	{
		Console.WriteLine("Method called!");
	}
}


public class DerivedClass2 : BaseClass
{
	public DerivedClass2()
	{
		Name = "DerivedClass2";
	}
}




public class Program
{
	public static void CallMethod(BaseClass c, string methodName)
	{
		var mi = c.GetType().GetMethod(methodName);
		if(mi != null)
		{
			Console.WriteLine("{0} has method {1}, calling it:", c.Name, methodName);
			mi.Invoke(c, null);
		} else {
			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");
	}
}
;