.NET не знает, в каком порядке ваши классы перечислены в вашем программном файле. Он просто видит классы.
В обычных условиях вы можете подумать об этом правиле:
Статические (класс) конструкторы выполняются непосредственно перед первым вызовом экземпляра .ctor или другого статического (класс) метода для этого класса
Хотя это не всегда так (они могут вызываться раньше, но не позже), это хорошее приближение, которое срабатывает большую часть времени.
Поэтому, чтобы обеспечить определенный порядок инициализации статического класса, я полагаюсь на следующее:
У меня есть один статический класс, который имеет метод Initialize (). Этот метод - первое, что я вызываю в методе Main () моей программы. В этом методе я вызываю Initialize-Methods для других классов в требуемом порядке. Это гарантирует, что код инициализации выполнен.