Is there a way in C# or .net IL to force a class that has a type initializer (static constructor) to load itself, without accessing any of its parameters?
Assuming I've got the class
public static class LogInitialization {
static LogInitialization() {
System.Console.WriteLine("Initialized");
}
}
Is there a way to get this line to print?
Note that the class is static so I can't instantiate it to force initialization, and it has no public members so I can't access them to start it.
Rummaging in the CLI spec, I found a reference to the method RuntimeHelpers.RunClassConstructor
If a language wishes to provide more rigid behavior — e.g., type initialization automatically triggers execution of base class’s initializers, in a top-to-bottom order — then it can do so by either:
- defining hidden static fields and code in each class constructor that touches the hidden static field of its base class and/or interfaces it implements, or
- by making explicit calls to
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor
(see Partition IV).