我有一个带有多个附件的乐器,可以连接和卸下它们。每个附件都有特定的设置,其中一些设置在重新校准附件时会更改。
我想使用YamlDotNet将附件的设置数据作为文档存储在单个YAML文件中。每当重新校准附件时,设置文件都会更新。我发现了很多关于在单个文件中反序列化多个文档的文章,但是在将多个文档序列化到单个文件中却没有任何内容(我是YamlDotNet的新手。您能知道吗?)。具体来说,如何将文件分隔符---和最终文件指示符...放入文件中?
为便于说明,下面是一些示例代码。首先,一个用于保存附件设置的类:
public class Accessory
{
public string AccessoryName { get; set; }
public float CalibrationConstant1 { get; set; }
public float CalibrationConstant2 { get; set; }
public DateTime CalibrationDate { get; set; }
}
以及用于存放许多配件的列表(可以是从一到十的任何东西):
public class AccessoryList
{
public List<Accessory> accessory;
public AccessoryList()
{
accessory = new List<Accessory>();
}
}
我尝试序列化设置是:
ISerializer serializer = new SerializerBuilder().EmitDefaults().Build();
string file = Application.StartupPath + @"\Accessories.yml";
using (StreamWriter writer = File.CreateText(file))
foreach (Accessory accessory in AccessoryList.accessory)
{
serializer.Serialize(writer, accessory);
}
因此,假设我们有两个配件。生成的.yml文件如下所示:
AccessoryName: Gargleblaster Pan-Galactic
CalibrationConstant1: 3.1415927
CalibrationConstant2: 2.718
CalibrationDate: 2018-11-13T12:33:55.9900338-05:00
AccessoryName: Phaser Set To Stun
CalibrationConstant1: 1.234321
CalibrationConstant2: 1.618
CalibrationDate: 2018-11-10T01:23:37.1453278-05:00
按预期,没有---或...的迹象,当我反序列化文件时,我仅获得第二个附件的数据,强烈表明我需要在其中获取这些序列。我尝试用引号写字符串,但是文件中出现的是,请鼓声,用引号引起来。
任何帮助将不胜感激!有时候,最明显的事情对于新手来说是最难的。