¿La palabra clave var no siempre funciona?

C #, VS 2010. Alguien, por favor explique por qué no puedo usarvar en mi código de abajo!

var props = TypeDescriptor.GetProperties(adapter);

// error CS1061: 'object' does not contain a definition for 'DisplayName'
foreach (var prop in props)
{
    string name = prop.DisplayName;
}

// No error
foreach (PropertyDescriptor prop in props)
{
    string name = prop.DisplayName;
}

TypeDescriptor.GetProperties devuelve unPropertyDescriptorCollection con instancias dePropertyDescriptor. ¿Por qué el compilador no puede ver esto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta