public static void Main()
var boring = new BoringPlugin();
Console.WriteLine(boring.Output());
var exciting = new ExcitingPlugin();
Console.WriteLine(exciting.Output());
public abstract class Plugin
public virtual string Output()
public class BoringPlugin : Plugin
public override string Output()
public class ExcitingPlugin : Plugin
public override string Output()
return "No boring defaults here!";