[英]c# implementing a class to just hold variables
我有一個 class:
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());
}
我需要能夠像這樣在不初始化 class 的情況下引用此 class 中的值:
int var1 = GetColumnsNames.Area + 1
我收到這樣的錯誤: The type initializer for 'BulkUploadToLOMDatabase.GetColumnsNames' threw an exception.
我在做什么錯>?
您的 class 具有 static 屬性,必須在加載類型時進行初始化。
您的 static 屬性之一正在引發異常。 由於您沒有檢查任何內容,例如,如果其中一個 AppSettings 不存在,它將引發異常並且類型不會初始化。
在調試器中運行程序,並將其設置為在任何托管異常上中斷,並查看問題到底是什么。 或者重寫您的代碼以提高異常安全性。
如果您每次都以這種方式訪問 class,我會設置為 static:
public static class GetColumnsNames
並給你的屬性吸氣劑選項:
public static int Occurrence_Date
{
get
{
return Convert.ToInt16(ConfigurationSettings.AppSettings["Occurrence_Date"].ToString());
}
}
您的字段初始化之一引發錯誤,可能是其中一個配置設置名稱的拼寫錯誤(在這種情況下,您在未初始化的 ZA8CFDE6331BD59EB2AC96F8911B59EB2AC96F8911C4B666Z 實例上調用ToString()
),或無效的 int 轉換等。在調試模式下運行以追蹤錯誤。
一種更簡潔的選擇是使用自定義配置管理
您的一個(或多個)成員的初始化程序正在引發異常。
猜測是因為其中一個無法解析為 Int16。 要么是因為 AppSettings 中沒有價值,要么是因為它的格式不正確。
很可能您的配置設置之一不存在或不是所需的類型,因此會引發異常 - 任何未捕獲的異常都會導致類型初始化失敗,因此您會看到此錯誤。
正如它所說,在 class 的 static 初始化代碼期間引發了異常。
我的猜測是 AppSettings 值之一為空或不是 integer 值,並且Convert.ToInt16
引發了異常
很可能我們的 AppSettings 之一丟失了。 因此,執行 AppSetting["setting"] 將返回 null。 然后在 null 值上調用 ToString 會導致初始化問題。 驗證我們所有的 AppSettings 確實存在於項目中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.