2015-03-19 88 views
1

要跟進該主題: How to save a List<string> on Settings.Default?如何將自定義集合保存到應用程序設置?

我想要做同樣的,但與自定義集合。我已經完成了在上面發佈的鏈接中的相同內容,但是如何爲對象列表執行此操作?

例如,如果它是List<FoodTypes>其中FoodTypes有兩個屬性 - 食物和類型。

FoodTypes:

Food | Type 
------------------ 
Orange | Fruit 
Lemon | Fruit 
Pork | Meat 

的想法是,這些類型可以在將來沒有讓他們從數據庫或不必重新部署應用程序進行配置。這是一個Windows服務,將使用它們。

編輯:我忘了提及我可以添加我的課程作爲設置的類型,但是如何將食物和類型添加到設置的值列?

enter image description here

編輯2:應用程序不必改變或保存新的,它應該只能夠從配置看他們,所以它可以比較它們從返回的結果數據庫。

+0

你不能將保存列表設置爲字符串,f.e序列化爲json嗎? – 2015-03-19 10:35:43

+0

@pwas我不確定你的意思,但它必須以一種簡單的方式,因爲它只能保留幾個值(最多五個)。它甚至不必是一個對象列表,但我想不出另一種方式。 – Apostrofix 2015-03-19 10:41:28

回答

2

假設FoodType類型是可序列化的(例如,具有Serializable屬性)。
您可以添加所需收集到Settings.Designer.cs文件:

[global::System.Configuration.UserScopedSettingAttribute()] 
[global::System.Configuration.SettingsSerializeAs(global::System.Configuration.SettingsSerializeAs.Binary)] 
[global::System.Configuration.DefaultSettingValueAttribute("")] 
public List<FoodType> FoodTypes 
{ 
    get 
    { 
     return this["FoodTypes"] as List<FoodType>; 
    } 
    set 
    { 
     this["FoodTypes"] = value; 
    } 
} 

SettingsSerializeAs(SettingsSerializeAs.Binary)屬性值可以讓您的一切存儲的設置。

+0

很好的答案,但是請你詳細說明如何將'FoodTypes'添加到設置中? – Apostrofix 2015-03-19 12:18:57

+0

@Apostrofix在程序中填充集合,將其分配給'Settings.Default.FoodTypes'並保存設置。然後找到保存的設置文件(通常是'C:\ Users \ user_name \ AppData \ Local \ company_name \ app_name \ version_number \ user.config')並從中獲取'FoodTypes'節點。 – Dmitry 2015-03-19 12:34:37

相關問題