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

C# 如何在.NET 3.5 Windows窗体中使用应用程序设置,c#,.net,settings,C#,.net,Settings,我正在尝试存储一种类型的System.Collection.Queue。队列将只包含字符串。问题是当我尝试使用它时,它总是空的 Settings.Default.CorrectionsDescription.Enqueue(textString); 我得到以下错误 对象引用未设置为对象的实例 我已使StringCollection正常工作,但我需要一个队列 如何在设置中或通过代码初始化队列?当我尝试时,它给出的错误是它是只读的。我总是使用: if (Settings.Default.Corre

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

Settings.Default.CorrectionsDescription.Enqueue(textString);
我得到以下错误

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

我已使
StringCollection
正常工作,但我需要一个队列


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

我总是使用:

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

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

我一直使用:

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

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

设置通常只将数据存储在非常简单的对象或集合中(xml可序列化,甚至字典已经导致问题!)

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

我建议使用ListStringCollection存储设置,并在应用程序启动时基于该集合创建队列

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

更新:

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

实现IEnumerable的对象还必须具有方法Add(T值)才能进行xml序列化队列没有此类方法,因此无法成功反序列化

:

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


设置通常只将数据存储在非常简单的对象或集合中(xml可序列化,甚至字典已经导致了问题!)

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

我建议使用ListStringCollection存储设置,并在应用程序启动时基于该集合创建队列

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

更新:

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

实现IEnumerable的对象还必须具有方法Add(T值)才能进行xml序列化队列没有此类方法,因此无法成功反序列化

:

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


你确定队列是空的,而不是你的文本字符串吗?是的,我已经做了;你确定队列是空的,而不是你的文本字符串吗?是的,我已经做了;我也不能让它工作。。。如果可以,我会继续前进。我一直在犯错误。无法将属性或索引器“ConfigFileTest.Properties.Settings.CorrectionsDescription”分配给--它是只读类型映射设置的范围设置为“Application”。。。尝试将其更改为“用户”,它将是可写的我也无法使其工作。。。如果可以,我会继续前进。我一直在犯错误。无法将属性或索引器“ConfigFileTest.Properties.Settings.CorrectionsDescription”分配给--它是只读类型映射设置的范围设置为“Application”。。。尝试将其更改为“User”,它将是可写的。这实际上是我到目前为止实现它的方式,但无法理解为什么队列无法工作。如果可以的话,它会简化事情,但在阅读了xml serializable之后,我现在了解了更多。感谢KonstantinAdded信息为什么队列不可序列化。我认为这是在设置中使用它时的主要问题。我在队列中存储的只是字符串。没有其他类型的对象。但我无法向队列中添加任何内容,因为它为Null。我无法在设计时使用Settings.setting文件对其进行初始化,也无法在运行时进行初始化。这实际上是我迄今为止实现它的方式,但无法找出队列无法工作的原因。如果可以的话,它会简化事情,但在阅读了xml serializable之后,我现在了解了更多。感谢KonstantinAdded信息为什么队列不可序列化。我认为这是在设置中使用它时的主要问题。我在队列中存储的只是字符串。没有其他类型的对象。但我无法向队列中添加任何内容,因为它为Null。我无法在设计时使用Settings.setting文件对其进行初始化,也无法在运行时进行初始化。