Этот автор только сильно запутал Вас. Код:
var instance = new {Name = "Alex", Age = 27}
Эквивалентен такому коду:
class Anonymous0001 // ссылочный тип
{
public string Name { get; private set; } // из других классов выглядит как read-only свойство
public int Age { get; private set; }
public Anonymous0001(string name, int age)
{
Name = name;
Age = age;
}
}
class Program
{
static void Main()
{
var instance = new Anonymous0001("Alex", 27);
}
}
Если будет другая строка new { ... }, то компилятор сгенерирует ещё один класс. Всю остальную ересь просто забудьте. В анонимный тип нельзя добавить какую либо функциональность и от них нет никакого толку. Созданы лишь как часть синтаксического сахара, для упрощения выборки нескольких значений из linq запросов. Вроде такого:
var a = new System.Collections.Generic.Dictionary<string, int>() { { "vasya", 0 }, { "kolya", 0 }, { "alex", 1} };
int i = 0;
var result = from item in a where item.Value == 0
select new { Index = i++, Name = item.Key, Id = item.Value }; // создание объекта анонимного типа
foreach(var res in result) {
bool first = true;
foreach (var prop in res.GetType().GetProperties()) {
if (first) first = false;
else Console.Write(", ");
Console.Write("{0} = {1}", prop.Name, prop.GetValue(res, null));
}
Console.WriteLine();
}