Using generic constructors would require the anonymous types to be named, which is not possible. Alternatively, generic methods may be used to allow type inference to occur.
var anon = new { Foo = 1, Bar = 2 };
var anon2 = new { Foo = 5, Bar = 10 };
List<T> CreateList<T>(params T[] items) {
return new List<T>(items);
}
var list1 = CreateList(anon, anon2);
In the case of List<T>
, implicitly typed arrays may be converted to a List<T>
through the ToList
LINQ method:
var list2 = new[] {anon, anon2}.ToList();