从 YAML 文件中读取设置。在设置中有 InitialDateTime。
就我而言,它设置为 09/07/2020 09:00:00。
系统减去日期为 7 月 9 日,矿场需要告知 YamlDotNet 现在是 9 月 7 日。
告诉我如何让她清楚日期写为 day.month.year。
程序.cs
using System;
namespace YamlDotNet_stackoverflow_Example
{
class Program
{
static void Main(string[] args)
{
var settings = Settings.GetFromYamlFile("Settings.yaml");
settings.SaveToYamlFile("Settings_output.yaml");
Console.WriteLine($"{settings.InitialDateTime:U}");
}
}
}
设置.cs
using System;
using System.Globalization;
using System.IO;
using YamlDotNet.Serialization;
namespace YamlDotNet_stackoverflow_Example
{
/// <summary>
/// Настройки расчета солвера
/// </summary>
public class Settings
{
/// <summary>
/// Начальная дата-время
/// </summary>
public DateTime InitialDateTime { get; set; }
/// <summary>
/// Чтение настроек из yaml-файла
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static Settings GetFromYamlFile(string fileName)
{
//CreateYamlFile(fileName);
var deserializer = new DeserializerBuilder()
.IgnoreUnmatchedProperties().Build();
using var file = new StreamReader(fileName);
var res = deserializer.Deserialize<Settings>(file);
return res;
}
/// <summary>
/// Сохранение настроек в yaml-файл
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public void SaveToYamlFile(string fileName)
{
var builder = new SerializerBuilder();
builder = builder.EmitDefaults(); // Для принудительной сериализации 0-вых значений
var serializer = builder.Build();
using var file = new StreamWriter(fileName);
serializer.Serialize(file, this);
file.Flush();
}
/// <summary>
/// Генератор для трафарета yaml-файла настроек при изменении структуры класса настроек
/// </summary>
/// <param name="fileName"></param>
private static void CreateYamlFile(string fileName)
{
var builder = new SerializerBuilder();
builder.EmitDefaults(); // Для принудительной сериализации 0 значений
var serializer = builder.Build();
var settings = new Settings
{
InitialDateTime = new DateTime(2020, 9, 7, 9, 0, 0)
};
using var file = new StreamWriter(fileName);
serializer.Serialize(file, settings);
file.Flush();
}
}
}
设置.yaml
InitialDateTime: 07.09.2020 9:00:00
示例数据和代码:https ://github.com/Dejsving/YamlDotNet-stackoverflow-Example