.NET runtime threw TypeInitializationException when initialising a type
TypeInitializationException: The type initializer for '<TypeName>' threw an exception.
The .NET runtime threw a TypeInitializationException because an exception was thrown inside a type's static constructor (the type initializer). Once a type initializer fails, the type is permanently marked as failed for the lifetime of the application domain — subsequent attempts to use the type will throw the same exception, even if the underlying problem was transient. The inner exception contains the actual error.
TypeInitializationException: The type initializer for '<TypeName>' threw an exception.
Why it happens
A static constructor (`static MyClass()`) threw an exception — commonly due to a missing configuration value, a null reference, a missing file, or a failed service connection.
A static field initialiser threw an exception, e.g., `static readonly string config = File.ReadAllText("config.json");` where the file does not exist.
A missing or incompatible assembly or native dependency (DLL) that a static field or constructor depends on could not be loaded.
A database, network, or external service call made during type initialisation failed.
Environment-specific configuration (environment variables, app settings, connection strings) required during type initialisation is absent in the current deployment environment.
How to fix it
Always inspect the inner exception — `TypeInitializationException.InnerException` contains the real error. Log or print it explicitly: `catch (TypeInitializationException ex) { Console.WriteLine(ex.InnerException); }`.
Move all fallible operations (file I/O, network calls, configuration reads) out of static constructors and into lazy-initialised properties or explicit initialisation methods that can be called and handled at an appropriate point.
If reading configuration in a static constructor, validate that the required keys exist before accessing them and provide meaningful error messages.
Check that all required assemblies and native dependencies are present in the deployment. Use `fuslogvw.exe` (Assembly Binding Log Viewer) to diagnose assembly load failures.
If the issue is environment-specific, add defensive null checks and fallback values for any configuration or environment-dependent code in the static initialiser.
Consider converting the static class to a singleton with lazy initialisation and proper exception handling.