Reading source code should be the aim of every serious software developer. I am constantly looking for patterns that are interesting and potentially useful for future projects. Anyway, I was reviewing some code over the weekend and there was a pattern that I have not seen for a while.

So below is a basic abstract Mammal class, you have two constructors differentiated by the method signature (of course).

    public abstract class Mammal
    {
        public Mammal()
        {
            Console.WriteLine("A");
        }
        public Mammal(bool asf)
        {
            Console.WriteLine("B");
        }
    }

So the MyDog class inherits from from Mammal and provides an opportunity to access the either of the base class constructors.

    public class MyDog : Mammal
    {
        public MyDog() : base()
        {
            Console.WriteLine("1");
        }
        public MyDog(bool asf) : base(asf)
        {
            Console.WriteLine("2");
        }
    }

You can explicitly select which base class constructor gets called by using ": base()" pattern after the constructor. Simple but nice!

Technorati tags: ,