¿Por qué C # / CLR no admite el método de anulación de co / contra-varianza?

Hay bastantes preguntas y respuestas sobre la piratería en torno a la limitación de C # que no permite que los tipos de retorno de método (y argumento) se cambien a tipos compatibles en las anulaciones, peropor qu ¿existe esta limitación, ya sea en el compilador de C # o en el CLR? Como puedo ver, no hay nada que pueda romperse si se permitiera la co / contra-varianza, entonces, ¿cuál es el razonamiento detrás de esto?

Se podría hacer una pregunta similar para ampliar los parámetros de acceso, por ejemplo, anular un método interno protegido con un método público (algo que admite Java, IIRC)

Respuestas a la pregunta(10)

Su respuesta a la pregunta