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

How to save a custom collection to the application settings?

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

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

例如,如果它是 List<FoodTypes>,其中 FoodTypes 有两个属性 - Food 和 Type。

食品类型:

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

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

编辑:我忘了提到我可以将我的 class 添加为设置的一种类型,但是我如何将食物和类型添加到设置中的值列?

编辑 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) 属性值允许您将所有内容存储在设置中。