C#4.0でdynamicキーワードが追加されてるけど、COMくらいにしか使わないのかなぁと思ってました。でも、ExpandoObjectというものの存在を知って、工夫の仕方によっては面白いものが出来そうだと思えてきた今日この頃です。
どんな動きをするクラスかというと
dynamic obj = new ExpandoObject(); // 適当にプロパティを書いても動く obj.Property1 = "あああ"; obj.Hogehoge = "いいい"; // もちろん値の取得もできる Console.WriteLine(obj.Property1); // あああ Console.WriteLine(obj.Hogehoge); // いいい
こんな動きをします。このExpandoObjectはIDictionary
dynamic o = new ExpandoObject(); // 適当にプロパティに値をセットして o.Property1 = "あああ"; o.Hogehoge = "いいい"; // Dictionaryとして扱うこともできる IDictionary<string, object> d = o; foreach (var key in d.Keys) { Console.WriteLine("{0} = {1}", key, d[key]); }
実行結果は以下のようになります。
Property1 = あああ Hogehoge = いいい
こいつは、どうやって使おう・・・!?