In a traditional singleton, you can initialize the instance like so:
private static readonly Messages _instance = new Messages();
Then you access it via a getter, like so:
public static Messages Instance {
get {
return _instance;
}
}
In this case, we have a parent and multiple descendants.
In the parent we have
protected static Base _instance;
public static Base Instance {
get {
return _instance;
}
}
In the descendant, we use the class constructor to populate the static variable.
static Derived() {
_instance = new Derived();
}
This should work because the class constructor is called when the class is first referenced, before it is used. For some reason, this is not working.
Derived.Instance.Initialize();
fails because Instance is null and the breakpoint in the constructor is never hit.
Update: The Base constructor gets called, but the Derived constructor does not. This may be because the static constructor is triggered when a static method is called on the class. The static method I am calling is on the parent, not the descendant.