如何将自定义集合保存到应用程序设置?

时间:2015-03-19 10:32:47

标签: c# settings app-config application-settings

要跟进此主题: How to save a List<string> on Settings.Default?

我正在尝试使用自定义集合执行相同操作。我已经完成了与上面发布的链接相同的操作,但是如何才能为对象列表执行此操作?

例如,如果它是List<FoodTypes>,其中FoodTypes有两个属性 - 食物和类型。

FoodTypes:

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

我们的想法是,将来可以配置这些类型,而无需从数据库中获取这些类型或必须重新部署应用程序。它是一个将使用它们的Windows服务。

编辑:我忘了提到我可以将我的类添加为设置的类型,但是如何在设置中将Food和Type添加到Value列?

enter image description here

编辑2:应用程序不必更改它们或保存新的应用程序,它应该只能从配置中读取它们,以便它可以比较从数据库返回的结果。

1 个答案:

答案 0 :(得分: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)属性值允许您将所有内容存储在设置中。