【发布时间】:2013-03-19 14:55:42
【问题描述】:
您好,我刚开始使用 C# WPF,并阅读了有关序列化以存储或加载数据的信息。我的问题是如何存储一个包含另一个类列表和一些附加参数的类?
我的第一个类(MeterValues)包含许多参数(类型、速度等)
public class MeterValues{}
我现在创建了第二个类来存储包含第一类类型的多个实例的列表。 (所以如果我有 3 个不同的仪表,这个列表大小 = 3)
public class MeterValuesList : IList<MeterValues>{}
现在我想给第二个类添加一个额外的参数,这个参数独立于第一个类,所以它应该只保存一次。 (不是针对 class1 的每个实例)
为了让我的问题清楚,我可以将额外的参数添加到第一个类,但是如果我有 100 个不同的仪表,则参数存储 100 次,我只需要存储一次。
知道如何做到这一点吗?
PS:如果您需要任何其他信息,请尽管询问,我非常渴望学习并帮助您帮助我解决这个问题。提前致谢。
更新:
我可以将 MeterValuesList 类保存到 .xml 文件中,但只有 List 存储在文件中,额外参数不显示(在我将其写入文件之前,它就在类中,检查它带有调试器但未显示在文件中)
MeterValuesList meterValuesList = DataContext as MeterValuesList;
meterValuesList.CommSettings = "Com5:19200,8,n,1";
FileStream stream = null;
try
{
stream = new FileStream(filename, FileMode.Create, FileAccess.Write);
XmlSerializer serializer = new XmlSerializer(typeof(MeterValuesList));
serializer.Serialize(stream, meterValuesList);
stream.Close();
}
这是将类保存到 xml 文件后的结果。缺少额外的参数。
<?xml version="1.0"?>
<ArrayOfMeterValues xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MeterValues></MeterValues>
</ArrayOfMeterValues>
【问题讨论】:
-
必须承认,PS 很棒。但您可能希望将其改写为更少“为我解决问题”而更多“帮助我学习”。
-
MeterValuesList 需要从 IList 派生有什么特殊原因吗?你不能只创建一个包含 List
属性的新类吗?
标签: c# wpf serialization