C# 3.0では、次の構文で匿名クラスを作成できます。
var o = new { Id = 1, Name = "Foo" };
これらの匿名クラスを汎用リストに追加する方法はありますか?
例:
var o = new { Id = 1, Name = "Foo" };
var o1 = new { Id = 2, Name = "Bar" };
List<var> list = new List<var>();
list.Add(o);
list.Add(o1);
もう一つの例:
List<var> list = new List<var>();
while (....)
{
....
list.Add(new {Id = x, Name = y});
....
}
ベストアンサー1
次のようにすることができます:
var list = new[] { o, o1 }.ToList();
この問題を解決する方法はたくさんありますが、基本的にはすべてどこかで型推論を使用します。つまり、ジェネリック メソッド (拡張メソッドとしての可能性もある) を呼び出す必要があります。別の例は次のとおりです。
public static List<T> CreateList<T>(params T[] elements)
{
return new List<T>(elements);
}
var list = CreateList(o, o1);
分かりましたね:)