when is it called in an inheritance hierarcy. is the base static constructor called before the derived static constructor?

The constructors are called in the order needed. If the derived class constructor doesn't make use of anything in the base class, it is called first, then the base class. But if you use something from the base class, before it is used the base constructor is called, then the derived one.