Dynamic creating Anonymous (similar) Types at program runtime.
using DynamicAnonymousType;
Type type = DynamicFactory.CreateType(
("Id", typeof(int)),
("Name", typeof(string)),
("Date", typeof(DateTime?)));
dynamic instance = type.CreateInstance(
("Id", 1),
("Name", "Text1"),
("Date", DateTime.Now));