2015-03-19 85 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

相关问题