使用YamlDotNet

时间:2018-11-13 18:49:51

标签: serialization yamldotnet

我有一个带有多个附件的乐器,可以连接和卸下它们。每个附件都有特定的设置,其中一些设置在重新校准附件时会更改。

我想使用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

按预期,没有---或...的迹象,当我反序列化文件时,我仅获得第二个附件的数据,强烈表明我需要在其中获取这些序列。我尝试用引号写字符串,但是文件中出现的是,请鼓声,用引号引起来。

任何帮助将不胜感激!有时候,最明显的事情对于新手来说是最难的。

0 个答案:

没有答案