我有一个班级:
class GetColumnsNames
{
public static int Occurrence_Date = Convert.ToInt16(ConfigurationSettings.AppSettings["Occurrence_Date"].ToString());
public static int Preanalytical_Before_Testing = Convert.ToInt16(ConfigurationSettings.AppSettings["1_0_Preanalytical_Before_Testing"].ToString());
public static int Cup_Type = Convert.ToInt16(ConfigurationSettings.AppSettings["Cup_Type"].ToString());
public static int Analytical_Testing_Phase = Convert.ToInt16(ConfigurationSettings.AppSettings["Analytical_Testing_Phase"].ToString());
public static int Area = Convert.ToInt16(ConfigurationSettings.AppSettings["Area"].ToString());
public static int Postanalytical_After_Testing = Convert.ToInt16(ConfigurationSettings.AppSettings["Postanalytical_After_Testing"].ToString());
public static int Other = Convert.ToInt16(ConfigurationSettings.AppSettings["Other"].ToString());
public static int Practice_Code = Convert.ToInt16(ConfigurationSettings.AppSettings["Practice_Code"].ToString());
public static int Comments = Convert.ToInt16(ConfigurationSettings.AppSettings["Comments"].ToString());
}
我需要能够在不初始化类的情况下引用此类中的值:
int var1 = GetColumnsNames.Area + 1
我收到如下错误:The type initializer for 'BulkUploadToLOMDatabase.GetColumnsNames' threw an exception.
我做错了什么>?
答案 0 :(得分:4)
您的类具有静态属性,必须在加载类型时初始化。
您的一个静态属性是抛出异常。既然你没有检查 任何事情,例如,如果其中一个AppSettings不存在,它将抛出异常并且该类型不会初始化。
在调试器中运行程序,并将其设置为在任何托管异常上中断,并查看问题实际是什么。或者重写代码以使其更加安全。
答案 1 :(得分:4)
如果你每次都以这种方式访问课程,我会把它变成静态的:
public static class GetColumnsNames
并提供属性getter选项:
public static int Occurrence_Date
{
get
{
return Convert.ToInt16(ConfigurationSettings.AppSettings["Occurrence_Date"].ToString());
}
}
答案 2 :(得分:2)
你的一个字段初始化是抛出错误,可能是其中一个配置设置名称的错误(在这种情况下,你在未初始化的对象实例上调用ToString()
),或者无效的int转换等。在调试模式下运行以跟踪错误。
更清洁的选择是使用custom configuration management
答案 3 :(得分:1)
一个(或多个)成员的初始化者会抛出异常。
猜测,这是因为其中一个不能被解析为Int16。要么是因为AppSettings中没有值,要么因为格式不正确。
答案 4 :(得分:1)
很可能您的某个配置设置不存在或者不是所需的类型,因此抛出异常 - 任何未捕获的异常都会导致类型初始化失败,因此您会看到此错误。
答案 5 :(得分:1)
因为它是sais,在类的静态初始化代码期间抛出了一个异常。
我的猜测是其中一个AppSettings值为空或不是整数值而Convert.ToInt16
抛出异常
答案 6 :(得分:1)
我们很可能缺少一个AppSettings。因此,AppSetting [“setting”]返回null。然后在空值上调用ToString会导致初始化问题。验证我们所有的AppSettings实际上都存在于项目中。