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 of base(...)
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 calls base(...)
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).