gpt4 book ai didi

c# - 如何在应用程序设置中存储对象列表

转载 作者:可可西里 更新时间:2023-11-01 03:05:20 26 4
gpt4 key购买 nike

最近熟悉了C#的应用设置,感觉很爽。
我一直在寻找一种方法来存储自定义对象列表,但找不到方法!
其实我看到一个post to store int[] ,但这对解决这个问题没有帮助。
我试图更改该解决方案的配置以使其适合我的问题。它的 XML 配置文件是:

<Setting Name="SomeTestSetting" Type="System.Int32[]" Scope="User">
<Value Profile="(Default)" />
</Setting>

我试图按照下面引用的类型属性来处理我的对象,但它没有帮助,因为它无法识别我的对象......我尝试了“type = List”和“type =”tuple []”< br/>这两个选项都没有帮助我!

我有一个类看起来像:

class tuple
{
public tuple()
{
this.font = new Font ("Microsoft Sans Serif",8);
this.backgroundcolor_color = Color.White;
this.foregroundcolor_color = Color.Black;
}
public string log { get; set; }
public Font font { get ; set; }
public String fontName { get; set; }
public string foregroundcolor { get; set; }
public Color foregroundcolor_color { get; set; }
public string backgroundcolor { get; set; }
public Color backgroundcolor_color { get; set; }
public Boolean notification { get; set; }
}

我想在应用程序设置中存储一个列表。
那么有没有什么办法可以达到这个目的。
提前致谢。
干杯,

最佳答案

您可以使用 BinaryFormatter将元组列表序列化为字节数组和 Base64(作为一种非常有效的方式)将字节数组存储为 string .

首先将你的类更改为类似的东西(提示: [SerializableAttribute] ):

[Serializable()]
public class tuple
{
public tuple()
{
this.font = new Font("Microsoft Sans Serif", 8);
//....
}

在名为 tuples 的设置中添加属性和 string 的类型.

tuples in Settings

然后您可以使用两种方法来加载和保存通用元组列表 (List<tuple>):

void SaveTuples(List<tuple> tuples)
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, tuples);
ms.Position = 0;
byte[] buffer = new byte[(int)ms.Length];
ms.Read(buffer, 0, buffer.Length);
Properties.Settings.Default.tuples = Convert.ToBase64String(buffer);
Properties.Settings.Default.Save();
}
}

List<tuple> LoadTuples()
{
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(Properties.Settings.Default.tuples)))
{
BinaryFormatter bf = new BinaryFormatter();
return (List<tuple>)bf.Deserialize(ms);
}
}

例子:

List<tuple> list = new List<tuple>();
list.Add(new tuple());
list.Add(new tuple());
list.Add(new tuple());
list.Add(new tuple());
list.Add(new tuple());

// save list
SaveTuples(list);

// load list
list = LoadTuples();

我离开 null 、空字符串和异常检查由您决定。

关于c# - 如何在应用程序设置中存储对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8688724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com