运行此代码时,我在第9行收到System.TypeInitializationException异常,我尝试在class'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类型的内部异常 静态构造函数是否无法初始化新对象?
答案 0 :(得分:4)
您的静态属性Tables
未初始化。它显示为TypeInitializationException,因为异常是在静态构造函数中触发的。因此,在初始化类型DataRepository
时会发生异常。
解决方案是将其设置为空列表。
public static List<DefinedField> Tables = new List<DefinedField>();