6. DynamicLTSV
• LightweightなC#で作ったLTSVライブラリー
• Dynamic! Dynamic! Dynamic!
var line = DynamicLTSV.ParseLine("hoge:foo¥tbar:baz¥n");
Console.WriteLine(line.hoge); // foo
var ltsv = DynamicLTSV.Create();
ltsv.hoge = "fuga";
Console.WriteLine(ltsv.ToString()); // hoge:fuga¥tbar:baz
https://github.com/masaru-b-cl/DynamicLTSV
7. 裏側
• 動的型を定義して
public class DynamicLTSV : DynamicObject
{
...
}
https://github.com/masaru-b-cl/DynamicLTSV/blob/master/DynamicLTSV/DynamicLTSV.cs
8. 裏側
• 各種アクセスに対する処理を書くだけ
public override bool TryGetMember(
GetMemberBinder binder, out object result)
{
var value = source[binder.Name];
result = new StringMember(value);
return true;
}
public override bool TrySetMember( ...
https://github.com/masaru-b-cl/DynamicLTSV/blob/master/DynamicLTSV/DynamicLTSV.cs
9. どこがLightweightなんだよ!
• API
– これ以上ないくらいにLightweightでしょ?
– [“key”]とかいらないし
var line = DynamicLTSV.ParseLine("hoge:foo¥tbar:baz¥n");
Console.WriteLine(line.hoge); // foo
var ltsv = DynamicLTSV.Create();
ltsv.hoge = "fuga";