I have a BasePage class which all other pages derive from:
public class BasePage
This BasePage has a constructor which contains code which must always run:
public BasePage() { // Important code here }
I want to force derived classes to call the base constructor, like so:
public MyPage : base() { // Page specific code here }
How can I enforce this (preferably at compile time)?
The base constructor will always be called at some point. If you call
this(...)instead ofbase(...)then that calls into another constructor in the same class – which again will have to either call yet another sibling constructor or a parent constructor. Sooner or later you will always get to a constructor which either callsbase(...)explicitly or implicitly calls a parameterless constructor of the base class.See this article for more about constructor chaining, including the execution points of the various bits (such as variable initializers).