我试图将对象列表序列化到我的user.settings文件中。我尝试了很多东西,我唯一能做的就是这里的解决方案。 Add a collection of a custom class to Settings.Settings我尝试了许多不同的东西,但这是唯一一直有效的东西。
编辑:我尝试序列化的是一个对象列表(可序列化的类),或者只是一个元组列表
解决方案如下所示:
public class Favorites: ApplicationSettingsBase
{
[UserScopedSetting()]
[SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Binary)]
[DefaultSettingValue("")]
public System.Collections.ArrayList FavoritesList
{
get
{
return ((System.Collections.ArrayList)this["FavoritesList"]);
}
set
{
this["FavoritesList"] = (System.Collections.ArrayList)value;
}
}
}
从技术上讲,它有效。但是,我想让它作为XML序列化工作,而不是二进制。切换到SettingsSerializeAs.Xml,它没有序列化设置,我得到的只是这些设置的空标签。将设置序列化为XML时,是否必须以不同方式执行此操作?
答案 0 :(得分:1)
您可以使用XmlSerializer并在代码中序列化您的集合。
然后您可以将序列化数据字符串保存到设置中。
答案 1 :(得分:1)
请试试这个,
public class Favorites: ApplicationSettingsBase
{
private String[] favoritesList;
[UserScopedSetting()]
[System.Xml.Serialization.XmlElementAttribute("FavoritesList")]
[DefaultSettingValue("")]
public String[] FavoritesList
{
get
{
return (this.favoritesList);
}
set
{
this.favoritesList = value;
}
}
}
注意:我使用了字符串数据类型的数组。但理想情况下,它可以是您的自定义对象的数组
答案 2 :(得分:0)
我看起来像这样工作,设置存储了一个“收藏夹”类型的对象:
public sealed class Favorites : ApplicationSettingsBase
{
public Favorites()
{
this.FavoritesList = new List<Favorite>();
}
[UserScopedSetting]
public List<Favorite> FavoritesList
{
get
{
return (List<Favorite>)this["FavoritesList"];
}
set
{
this["FavoritesList"] = value;
}
}
}
[Serializable]
public class Favorit
{
// ...
}