案例:我正在创建一个从plc中读取值的程序。为了读取这些值,将填充配置选项卡。此配置选项卡将所有值放入arraylist中。如果程序关闭,它会丢失所有配置数据,我想创建一个函数来保存这个配置数据。我对这些事情完全陌生,如果你们有一个答案和/或示例代码,我很好奇。我正在考虑存储完整的arraylist,并在我打开 .whatever 文件时读出。
正如您可能已经看到的那样,我已经创建了一个菜单。
Arraylist name = allData。
arraylists在名为DataPerLabel。
的对象中接受此数据配置标签:
Class 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;
}
}
我想将这个arraylist存储在.ini或.txt fil
中我现在试过这个:
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上无法进行序列化,因为它没有没有参数的构造函数。
希望任何人都可以提供帮助,
由于
答案 0 :(得分:0)
您可以将数据保存为xml字符串:
List<DataPerLabel> _dataPerLabelList; // this is your data object.
.
.
.
// on saving:
XmlSerializer serializer = new XmlSerializer(typeof(List<DataPerLabel>));
using (XmlWriter writer = XmlWriter.Create(yourFilePath, new XmlWriterSettings() { Indent = true }))
{
serializer.Serialize(writer, _dataPerLabelList);
}
.
.
.
// on loading your form:
XmlSerializer deserializer = new XmlSerializer(typeof(List<DataPerLabel>));
using (XmlReader reader = XmlReader.Create(yourFilePath))
{
_dataPerLabelList = (List<DataPerLabel>)deserializer.Deserialize(reader);
}
注意:由于您的列表包含相同类型的对象,因此我认为无需使用ArrayList
,您只需使用List<DataPerLabel>
。< / p>
答案 1 :(得分:0)
这样!
使用:
存储列表:
List<DataPerLabel> lst = new List<DataPerLabel>();
string json = JsonConvert.SerializeObject(lst);
File.WriteAllText("path", json);
阅读清单:
string json = File.ReadAllText("path");
List<DataPerLabel> lst = JsonConvert.DeserializeObject<List<DataPerLabel>>(json);