簡體   English   中英

c# 實施 class 以僅保存變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM