Майк - Я считаю, что контравариантность не допускается в C # либо
См. Разброс параметров типового типа в CLR для получения дополнительной информации.