private static void Main(string[] args) { var baseClass = new BaseClass(); var derivedOverride = new DerivedOverride(); var derivedNew = new DerivedNew(); var derivedOverWrite = new DerivedOverwrite(); baseClass.Name(); derivedOverride.Name(); derivedNew.Name(); derivedOverWrite.Name(); Console.ReadLine(); baseClass.Name(); derivedOverride.Name(); ((BaseClass) derivedNew).Name(); ((BaseClass) derivedOverWrite).Name(); Console.ReadLine(); var t1 = typeof (BaseClass); Console.WriteLine(t1.Name); Console.WriteLine(t1.Assembly); }