Static constructor not called before static fields

.net, c#, clr, static

Solution

From MSDN:

The static field variable initializers of a class correspond to a sequence of assignments that are executed in the textual order in which they appear in the class declaration.

So try to move the initialization to before the `static` constructor, or include the association in the `static` constructor itself.

And even though, you are trying something impossible, since the static field uses a variable declared inside the static constructor.

Try this:

private static AppSettingsSection _appSettingsLogsSection;
public static int LogSendIntervalMinutes;

static Configuration()
{
    var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    _appSettingsLogsSection = config.GetSectionGroup("Logs").Sections["appSettings"] as AppSettingsSection;

    LogSendIntervalMinutes = Convert.ToInt32(_appSettingsLogsSection.Settings["LogSendIntervalMinutes"]);        }
}

Problem

I have a class as follows : ``` static class Configuration { private static AppSettingsSection _appSettingsLogsSection; static Configuration() { var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); _appSettingsLogsSection = config.GetSectionGroup("Logs").Sections["appSettings"] as AppSettingsSection; } public static int LogSendIntervalMinutes = Convert.ToInt32(_appSettingsLogsSection.Settings["LogSendIntervalMinutes"]); } ``` Now, as per my understanding, the static constructor should be called before the first reference to any static member is made. But surprisingly, it is not behaving like that. When I reference LogSendIntervalMinutes from Main class, instead of triggering the static constructor, call goes straight to the static field resulting in a NullReferenceException. Am I doing something wrong here and is my understanding correct?

Original source

Related problems