c#实现一个只保存变量的类

时间:2011-07-13 21:29:56

标签: c# datatable

我有一个班级:

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.

我做错了什么>?

7 个答案:

答案 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实际上都存在于项目中。