2017-05-24 108 views
2

編輯更改設置的數據類型Settings.settings

我已經改變了我使用的設置從

private int _Capacity = ConfigurationManager.AppSettings["FuelTankCapacity"]; 

到...

private int _Capacity = Convert.ToInt32(ConfigurationManager.AppSettings["FuelTankCapacity"]); 

這解決了這個問題,但它感覺像是一個懶散的修復。必須有一種方法來指定整數類型的設置,有沒有?

原來的問題

已經在我的WinForms應用程序創建的一些設置,我有一些麻煩,他們中的一個。

該設置旨在指定燃油箱的最大容量,值爲2000(2000升)。

不幸的是,該設置正在被讀爲字符串值而不是int,即使我指定它應該是一個整數值。

下面是這個設定的App.config代碼:

<setting name="FuelTankCapacity" serializeAs="String"> 
    <value>2000</value> 
</setting> 

注意,SerializeAs值更改爲INT /的Int32不能解決問題。 Here's the Settings.settings screen

+0

到目前爲止您無法重現您的問題,您可以發佈屬性設置蒙版的屏幕截圖嗎?與有問題的變量? –

+0

你是否像這樣使用設置:** Properties.Settings.Default.FuelTankCapacity **? –

+0

你是否通過項目屬性窗口修改了設置文件,而不是直接進入app.config.That似乎總是有效。然後通過「屬性」命名空間訪問它。 – Wheels73

回答

1

我想問題是,AppSettingsNameValueCollection類型的其根據MSDN

可以或者與鍵或與索引來訪問相關聯的字符串的鍵和字符串值的集合。

所以採取這條路線,你最終不可避免地與一個字符串。

使用Property命名空間,您可以通過Settings變量直接訪問,因此訪問類型,您指定它:

int t = Properties.Settings.Default.FuelTankCapacity; 

這裏有更多的信息,有關using settings at runtime

您可以訪問應用程序範圍設置的值爲只讀,您可以讀寫用戶範圍設置的值。 C#中的屬性命名空間提供了設置。

+0

非常感謝!我要接受這個答案不僅是因爲它解決了我遇到的轉換問題,而且它也給了我正確的價值,而我的上面的代碼卻沒有。 – Ortund

+0

@Ortund非常受歡迎。很高興我能幫上忙。在你的問題之前,我不知道變量也可以通過'ConfigurationManager'訪問。很高興知道這一點。 –