如何在.NET 3.5 Windows窗体中使用应用程序设置

时间:2009-09-23 14:04:27

标签: c# .net settings

我正在尝试存储System.Collection.Queue类型。队列只包含字符串。问题是,当我尝试使用它时,它总是空的。

Settings.Default.CorrectionsDescription.Enqueue(textString);

我收到以下错误。

  

对象引用未设置为对象的实例。

我让StringCollection工作正常,但我需要一个FIFO队列。

如何在“设置”或代码中初始化队列?当我尝试时,它给出了只读的错误。

2 个答案:

答案 0 :(得分:1)

设置通常只将数据存储在非常简单的对象或集合中(xml-serializable,甚至Dictionary< TKey,TValue>已经导致问题!)。

队列具有特殊语义,不太适合数据存储。

我建议使用列表< string> StringCollection 来存储设置,并根据该集合在应用程序启动时创建队列

保存是相同的,但顺序相反 - 从队列中创建List,将其放入Settings类并保存。

<强>更新

标准设置机制使用XML序列化来实现对象持久性。

实现 IEnumerable&lt; T&gt; 的对象还必须具有方法添加(T值)才能 xml-serializable 队列&lt; T&gt; 没有这样的方法,因此无法成功反序列化。

MSDN

  

如果满足某些要求,XmlSerializer可以处理实现IEnumerable或ICollection的类。实现IEnumerable的类必须实现一个带有单个参数的公共Add方法

答案 1 :(得分:0)

我一直用过:

if (Settings.Default.CorrectionsDescription == null)
{
    Settings.Default.CorrectionsDescription = new Queue();
}

在程序启动时,但我想知道更好的方法。