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

本文关键字:保存 变量 一个 实现 | 更新日期: 2023-09-27 18:01:55

我有一个类:

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.

我做错了什么>?

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

你的类有静态属性,必须在加载类型时初始化。

你的一个静态属性抛出异常。既然你不检查例如,如果其中一个AppSettings不存在,它将抛出一个异常,并且该类型不会初始化。

在调试器中运行程序,并将其设置为在任何托管异常时中断,并查看实际问题是什么。

如果您每次都以这种方式访问类,我会将其设置为静态:

public static class GetColumnsNames

给你的属性getter选项:

public static int Occurrence_Date 
{
    get
    {
        return Convert.ToInt16(ConfigurationSettings.AppSettings["Occurrence_Date"].ToString());
    }
}

您的一个字段初始化抛出错误,可能是配置设置名称之一的拼写错误(在这种情况下,您在未初始化的对象实例上调用ToString()),或无效的int转换等。在调试模式下运行以跟踪错误。

一个更简洁的选择是使用自定义配置管理

一个(或多个)成员的初始化器抛出异常。

猜测,这是因为其中一个不能被解析为Int16。要么是因为AppSettings中没有值,要么是因为它的格式不对。

很可能您的配置设置之一不存在或不是所需的类型,因此会抛出异常-任何未捕获的异常都会导致类型初始化失败,因此您会看到此错误。

在类的静态初始化代码期间抛出了一个异常。

我的猜测是其中一个AppSettings值是空的或不是整数值,Convert.ToInt16抛出了异常

很可能我们的某个AppSettings丢失了。这样做AppSetting["setting"]返回null。然后在null值上调用ToString会导致初始化问题。验证我们所有的AppSettings在项目中实际存在