はじめに
システムの設定ファイルなどをYAMLで記載し、ファイルを読み込みオブジェクトにデシリアライズする方法のメモです
YamlDotNet
インストール
nugetでインストールします
dotnet add package YamlDotNet
基本的な使い方
下記のようなsetting.yamlを下記のSettingクラスにパースする例です
ConnectionString: DataSource=app.db
class Setting { public string ConnectionString { get; set; } }
読み込んだYAMLのstringをデシリアライズすればOK
var yaml = File.ReadAllText("setting.yaml"); var deserializer = new DeserializerBuilder().Build(); var setting = deserializer.Deserialize<Setting>(yaml);
プロパティの一文字目を小文字にする方法
デフォルトではYAMLのプロパティとデシリアライズするクラスのプロパティが一致している必要があります
// デシリアライズできる ConnectionString: DataSource=app.db
一般的にはYAMLの1文字目は小文字の場合が多いので下記のようにしたいのですが、デシリアライズできません
// 1文字目が小文字のためデシリアライズできない connectionString: DataSource=app.db
デシリアライザーを作る時に下記のようにすれば、1文字目が小文字でもデシリアライズできます
var deserializer = new DeserializerBuilder().WithNamingConvention(CamelCaseNamingConvention.Instance).Build();