¿Cómo funciona ToString en un tipo anónimo?

Estaba jugando con tipos anónimos, y accidentalmente lo puse en la consola. Se veía básicamente como lo definí.

Aquí hay un programa corto que lo reproduce:

using System;
class Program
{
    public static void Main(string[] args)
    {
        int Integer = 2;
        DateTime DateTime = DateTime.Now;
        Console.WriteLine(new { Test = 0, Integer, s = DateTime });
        Console.ReadKey(true);
    }
}

Ahora, la salida es:

{ Test = 0, Integer = 2, s = 28/05/2013 15:07:19 }

Intenté usar dotPeek para entrar en el ensamblaje y descubrir por qué, pero no sirvió de nada.[1] Aquí está el código dotPeek'd:

// Type: Program
// Assembly: MyProjectName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// Assembly location: Not telling you! :P
using System;
internal class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine((object) new
    {
      Test = 0,
      Integer = 2,
      s = DateTime.Now
    });
    Console.ReadKey(true);
  }
}

Así que no es muy diferente, en absoluto.

¿Entonces, cómo funciona? ¿Cómo se produce de esa manera?

Notas:

[1]: Olvidé activar "Mostrar código generado por compilador", esa es la razón por la que no entendí cómo funciona.

Respuestas a la pregunta(3)

Su respuesta a la pregunta