Yes, you will have to implement the constructors that make sense for each derivation and then use the
base keyword to direct that constructor to the appropriate base class or the
this keyword to direct a constructor to another constructor in the same class.
If the compiler made assumptions about inheriting constructors, we wouldn’t be able to properly determine how our objects were instantiated. In the most part, you should consider why you have so many constructors and consider reducing them to only one or two in the base class. The derived classes can then mask out some of them using constant values like
null and only expose the necessary ones through their constructors.
In C#4 you could specify default parameter values and use named parameters to make a single constructor support multiple argument configurations rather than having one constructor per configuration.