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.
我做错了什么>?
你的类有静态属性,必须在加载类型时初始化。
你的一个静态属性抛出异常。既然你不检查例如,如果其中一个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在项目中实际存在