Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
C#はLLですが何か?  ~ DynamicLTSVで学ぶ軽量C# ~       高野 将 /@masaru_b_cl             2013/3/23Niigata.LL @ まちなかキャンパス長岡
自己紹介• 長岡在住 SI屋の開発者• 兼業主夫
宣伝3/20に発売されました。本屋で見かけたらよろしく。
宣伝
LTSVとは• Labeled Tab-separated Values    hoge:foo¥tbar:baz¥n            詳しくは ltsv.org まで
DynamicLTSV  • LightweightなC#で作ったLTSVライブラリー  • Dynamic! Dynamic! Dynamic!var line = DynamicLTSV.ParseLine("hoge:foo¥tbar:b...
裏側 • 動的型を定義して       public class DynamicLTSV : DynamicObject       {           ...       }https://github.com/masaru-b-cl/D...
裏側 • 各種アクセスに対する処理を書くだけ     public override bool TryGetMember(       GetMemberBinder binder, out object result)     {      ...
どこがLightweightなんだよ!  • API     – これ以上ないくらいにLightweightでしょ?     – [“key”]とかいらないしvar line = DynamicLTSV.ParseLine("hoge:foo¥...
どこがLightweightなんだよ!• 実装は確かにHeavyに見える – 記述量は比較的多いが、   ほぼ定型なので慣れれば問題なし – TrySetMember/TrySetMemberを始めとした、   Try~をオーバーライドするだけ...
どこがLightweightなんだよ!• 導入 – NuGet一発 – .NETだってパッケージマネージャあるんだぜ       https://nuget.org/packages/DynamicLTSV/
悔しかったら他の言語で動的アクセスやってみな!
Upcoming SlideShare
Loading in …5
×

Lightweight C#

2,330 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Lightweight C#

  1. 1. C#はLLですが何か? ~ DynamicLTSVで学ぶ軽量C# ~ 高野 将 /@masaru_b_cl 2013/3/23Niigata.LL @ まちなかキャンパス長岡
  2. 2. 自己紹介• 長岡在住 SI屋の開発者• 兼業主夫
  3. 3. 宣伝3/20に発売されました。本屋で見かけたらよろしく。
  4. 4. 宣伝
  5. 5. LTSVとは• Labeled Tab-separated Values hoge:foo¥tbar:baz¥n 詳しくは ltsv.org まで
  6. 6. DynamicLTSV • LightweightなC#で作ったLTSVライブラリー • Dynamic! Dynamic! Dynamic!var line = DynamicLTSV.ParseLine("hoge:foo¥tbar:baz¥n");Console.WriteLine(line.hoge); // foovar ltsv = DynamicLTSV.Create();ltsv.hoge = "fuga";Console.WriteLine(ltsv.ToString()); // hoge:fuga¥tbar:baz https://github.com/masaru-b-cl/DynamicLTSV
  7. 7. 裏側 • 動的型を定義して public class DynamicLTSV : DynamicObject { ... }https://github.com/masaru-b-cl/DynamicLTSV/blob/master/DynamicLTSV/DynamicLTSV.cs
  8. 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. 9. どこがLightweightなんだよ! • API – これ以上ないくらいにLightweightでしょ? – [“key”]とかいらないしvar line = DynamicLTSV.ParseLine("hoge:foo¥tbar:baz¥n");Console.WriteLine(line.hoge); // foovar ltsv = DynamicLTSV.Create();ltsv.hoge = "fuga";
  10. 10. どこがLightweightなんだよ!• 実装は確かにHeavyに見える – 記述量は比較的多いが、 ほぼ定型なので慣れれば問題なし – TrySetMember/TrySetMemberを始めとした、 Try~をオーバーライドするだけ – APIの軽さのメリットの方が大きい public override bool TryGetMember( ... public override bool TrySetMember( ...
  11. 11. どこがLightweightなんだよ!• 導入 – NuGet一発 – .NETだってパッケージマネージャあるんだぜ https://nuget.org/packages/DynamicLTSV/
  12. 12. 悔しかったら他の言語で動的アクセスやってみな!

×