ごった煮

色々な事を書いてます

C#のモデルクラスからDictionaryを生成する

タイトルの通り 個人的なメモ程度の簡単な実装です。

使う場面的には、扱ってるAPIがフォームのPOSTしか受け付けてないみたいな仕様の場合に、モデルクラスからリクエストBodyを生成するみたいなことを想定しています。

public static Dictionary<string, string> ToDic<T>(this T model)
{
     var dictionary = model.GetType()
     .GetProperties()
     .Where(t => t.GetValue(model, null) != null)
     .Select(i => (i.Name, i.GetValue(model, null)?.ToString()))
     .ToDictionary(x => x.Item1, x => x.Item2);

     return dictionary;
}

プロパティにクラスとかが入るともうちょっと複雑になりますが割愛

まとめ

json使いたいですね