YamlDotNetを使って詰まったところなどメモ


YamlDotNetとは

YamlをC#クラスに流し込むときに便利なライブラリ

VS2015のNuGetで YamlDotNet , YamlDotNet.Dynamic , YamlDotNet.Signedの3つをインストールすれば使えるようになります。
(2015/09/17現在)

参考

YamlDotNet
http://aaubry.net/pages/yamldotnet.html

C#でYAMLを使えるか試してみたAdd Star
http://opcdiary.net/?p=25878

YamlDotNet - Deserializing an object graph by Antoine Aubry
https://dotnetfiddle.net/HD2JXM

YamlDotNetを使っていて気づいたこと・詰まったところなどのメモ

・YAMLにあるキーの左隣の空白が半角スペース12個、インデントは半角スペース4個になっていないとデシリアライズに失敗する

・C#クラスのメンバ変数の型と対応するYAMLの値の型が異なるとデシリアライズに失敗する

・YAMLにあるキーの名前と同じ名前のpublic変数が無いとデシリアライズに失敗する.

ただし、YamlAlias属性を変数につけると名前が異なるYAMLキーとC#変数を結びつけることができる。

以下の二つは同じものであると解釈されるみたいです。

[YamlAlias("in")]
public int inParam;
public int in;

inなどのC#予約語を使いたいときなんかは便利ですね。

・yamlの末尾に...をつける必要はない(つけていたほうが安全かも)

・値yes,noはstringと解釈される。 (C#クラス側の変数の型をboolにするとデシリアライズ失敗)

・デシリアライズしたいクラスの中に別のクラス・メソッドなどを定義してもOK

・YAMLのキーの並び順とC#クラスの変数の並び順番は異なっていてもOK