Я получаю исключение System.TypeInitializationException в строке 9 при запуске этого кода, в котором я пытаюсь заполнить общий список в class'static constuctor.C# TypeInitializationException при инициализации общей коллекции в static constuctor
using System;
using System.Collections.Generic;
namespace ConsoleApplication5_static_constructor {
public static class DataRepository {
public static List<DefinedField> Tables;
static DataRepository() {
Console.WriteLine("static DataRepository constructor fired");
Tables.Add(new DefinedField("ID")); **//this is line 9**
}
}
public class DefinedField {
string _tableName;
public DefinedField(string tableName) {
_tableName = tableName;
}
public string TableName {
get { return _tableName; }
set { _tableName = value; }
}
}
}
код вызова:
using System.Collections.Generic;
namespace ConsoleApplication5_static_constructor {
class Program {
static void Main(string[] args) {
List<DefinedField> x = DataRepository.Tables;
}
}
}
Что именно вызывает ошибку и как я ее решить, пожалуйста?
Редактировать: Также существует внутреннее исключение типа NullReferenceException Является ли статическим конструктором, не способным инициализировать новые объекты?
Обычно, когда вы получаете исключения, которые вы не понимаете, смотрите на InnerException. Это было бы исключение NullReferenceException, которое скажет вам причину. – CathalMF
Спасибо, я буду помнить об этом в следующий раз. Я рад, что вы, ребята, помогли мне так быстро. На самом деле мне потребовалось некоторое время, чтобы понять это, вероятно, потому, что я больше привык писать скрипты python. – kitty
@CathalMF Обычно да, но не тогда, когда исключение происходит в статическом конструкторе. – Maarten