lightweight c#

12

Click here to load reader

Upload: sho-takano

Post on 25-May-2015

1.457 views

Category:

Technology


4 download

DESCRIPTION

Niigata.LL (http://atnd.org/events/36394) 用スライド 「C#はLLですが何か?~DynamicLTSVで学ぶ軽量C#」

TRANSCRIPT

Page 1: Lightweight C#

C#はLLですが何か? ~ DynamicLTSVで学ぶ軽量C# ~

高野 将 /@masaru_b_cl

2013/3/23

Niigata.LL @ まちなかキャンパス長岡

Page 2: Lightweight C#

自己紹介

• 長岡在住 SI屋の開発者

• 兼業主夫

Page 3: Lightweight C#

宣伝

3/20に発売されました。 本屋で見かけたらよろしく。

Page 4: Lightweight C#

宣伝

Page 5: Lightweight C#

LTSVとは

• Labeled Tab-separated Values

詳しくは ltsv.org まで

hoge:foo¥tbar:baz¥n

Page 6: Lightweight C#

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

Page 8: Lightweight C#

裏側

• 各種アクセスに対する処理を書くだけ

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

Page 9: Lightweight C#

どこが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";

Page 10: Lightweight C#

どこがLightweightなんだよ!

• 実装は確かにHeavyに見える

–記述量は比較的多いが、 ほぼ定型なので慣れれば問題なし

– TrySetMember/TrySetMemberを始めとした、 Try~をオーバーライドするだけ

– APIの軽さのメリットの方が大きい

public override bool TryGetMember( ... public override bool TrySetMember( ...

Page 11: Lightweight C#

どこがLightweightなんだよ!

• 導入

– NuGet一発

– .NETだってパッケージマネージャあるんだぜ

https://nuget.org/packages/DynamicLTSV/

Page 12: Lightweight C#

悔しかったら 他の言語で 動的アクセス やってみな!