Статический конструктор не будет вызываться, если вы просто используете открытые константы.Например, рассмотрим этот класс:
class Testo
{
public const string MyValue = "Hello, world";
public static readonly int xyzzy;
static Testo()
{
Console.WriteLine("In static constructor");
xyzzy = 27;
}
}
Теперь в другом классе выполните:
Console.WriteLine(Testo.MyValue);
Console.WriteLine(Testo.xyzzy);
Ваш вывод будет:
Hello, world
In static constructor
27
Константы поднятыиз класса во время компиляции.Таким образом, значение Testo.MyValue
не ссылается на класс Testo
во время выполнения.Статический конструктор не вызывается до тех пор, пока вы не вызовете что-то, требующее инициализации.
Так что, да, вам нужно получить доступ к чему-то вроде static readonly
, если вы хотите убедиться, что конструктор вызывается.