public virtual string GetName()
public class Derived : Base
public override string GetName()
public static class Extensions
public static string GetNameByExtension(this Base item)
public static string GetNameByExtension(this Derived item)
public static class Program
public static void Main()
Derived derived = new Derived();
Console.WriteLine(derived.GetName());
Console.WriteLine(@base.GetName());
Console.WriteLine(derived.GetNameByExtension());
Console.WriteLine(@base.GetNameByExtension());