RouteValueDictionaryクラスで匿名型を辞書に変換する

More than 1 year has passed since last update.

匿名型のオブジェクトを受け取るメソッドを書く必要があって、objectで受け取るとプロパティにアクセスするにはリフレクション使わないといけないのかな、だとしたら面倒だなぁと思ってたら、system.web.routingにあるRouteValueDictionaryを使うと簡単にIDictionary<string, object>に変換できると知ったのでメモ。

使い方は、RouteValueDictionaryのコンストラクタに匿名型のオブジェクトを渡すだけ。簡単。

MSDN:RouteValueDictionary クラス

    using System;
    using System.Web.Routing;

    class Program
    {
        // 匿名型のオブジェクトを受け取り、辞書に変換する
        static void Func(object anonymousObj)
        {
            var dict = new RouteValueDictionary(anonymousObj);
            foreach (var kv in dict)
            {
                Console.WriteLine($"{kv.Key} => {kv.Value}");
            }
        }

        static void Main(string[] args)
        {
            Func(new { item1 = "aaa", item2 = 123 });
            Console.ReadLine();
        }
    }

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.