【发布时间】:2018-03-06 02:39:34
【问题描述】:
案例:我正在创建一个从 plc 中读取值的程序。为了读取这些值,需要填写一个配置选项卡。此配置选项卡将他的所有值放入一个数组列表中。如果程序关闭,它会丢失他所有的配置数据,我想创建一个函数来保留这个配置数据。我对这些事情完全陌生,我很好奇你们是否有答案和/或示例代码。我正在考虑存储完整的数组列表,并在我打开这个 .whatever 文件时读出。
您可能已经看到,我已经创建了一个菜单。
数组列表名称 = allData。
arraylists 在名为 DataPerLabel 的对象中接受此数据。
配置选项卡:
类 DataPerLabel:
class DataPerLabel
{
public String labelName;
public String labelAdress;
public String dataType;
public bool monitor;
public DataPerLabel(String labelName, String labelAdress, String dataType, bool monitor)
{
this.labelName = labelName;
this.labelAdress = labelAdress;
this.dataType = dataType;
this.monitor = monitor;
}
public String getLabelName()
{
return labelName;
}
public String getLabelAdress()
{
return labelAdress;
}
public String getDataType()
{
return dataType;
}
public bool getMonitor()
{
return monitor;
}
}
我想将此数组列表存储在 .ini 或 .txt 文件中
我现在已经尝试过了:
private void menuItemSave_Click(object sender, System.EventArgs e)
{
string yourFilePath = @"C:\\Users\\Gebruiker\\Desktop\\WindowsHMI\\";
XmlSerializer serializer = new XmlSerializer(typeof(DataPerLabel));
foreach (DataPerLabel configRecord in allData)
{
using (XmlWriter writer = XmlWriter.Create(yourFilePath, new XmlWriterSettings() { Indent = true }))
{
serializer.Serialize(writer, configRecord);
}
}
}
给我错误:在 allDataPerLabel 上无法进行序列化,因为它没有没有参数的构造函数。
希望任何人都可以提供帮助,
谢谢
【问题讨论】:
-
您应该考虑将文件保存到 app.config 或使用 ConfigurationManager 的用户配置文件中
-
让我看看,正如我所说,我是全新的学生,所以还是谢谢!
-
使用序列化很容易将整个数组列表存储在一个文件中,并在启动时使用反序列化再次加载它。但我宁愿接受@MarkusDeibel 将数据存储在配置文件中的建议。如果每个用户的配置选项卡中的数据不同,我会将数据存储为用户设置,如果每个用户都相同,我会将它们存储在配置文件中。
-
用最快的解决方案回答你
-
顺便说一句,
ArrayList是一个非泛型集合,几乎完全被List<T>取代。我强烈建议您在几乎所有情况下都使用泛型集合。