Я заметил кое-что, чего совершенно не понимаю. У меня есть класс ConfigurationProvider
, который загружает значения конфигурации из базы данных, а затем класс Configuration
, который анализирует их и делает их доступными для остальной части моего приложения. (На самом деле я анализирую xml
конфигурацию, но, например, я просто заменю ее на long
)
public class ConfigurationProvider
{
public static ConfigurationProvider Provider { get; } = new ConfigurationProvider();
public string GetParameter()
{
// gets configuration parameter from database
}
}
public class Configuration
{
public static long Parameter { get; } = long.Parse(ConfigurationProvider.Provider.Parameter);
}
В случае, если в базе данных нет действительного значения, TypeInitializationException
будет выброшено при доступе к Configuration.Parameter;
, тогда, когда я изменяю значение в базе данных и снова получаю доступ к Configuration.Parameter;
, я все равно получаю точно такое же исключение.
Итак, мой вопрос: почему это происходит? Можете ли вы указать мне некоторые документы об этом? Насколько я понимаю, public static long Parameter { get; }
следует инициализировать только один раз, как только класс Configuration
будет доступен в первый раз. Но исключение заставляет меня чувствовать, что эта инициализация не удалась и должна быть выполнена еще раз. Или это означает, что Parameter
на самом деле был инициализирован и теперь ссылается на данное исключение?
ps: я знаю, как это исправить, чтобы не нуждаться в коде, я просто хочу лучше понять эту проблему, чем сейчас.