¿Por qué esta conversión no funciona?

El siguiente código se comporta de manera extraña (al menos para mí):

int testValue = 1234;

this.ConversionTest( testValue );

private void ConversionTest( object value )
{
    long val_1 = (long) (int) value; // works
    long val_2 = (long) value;       // InvalidCastException
}

No entiendo por qué el lanzamiento directo (explícito) a largo no funciona. ¿Alguien puede explicar este comportamiento?

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta