¿Por qué no puedo llamar a un método de extensión desde una clase base del tipo extendido?

Estoy tratando de agregar la capacidad de buscar elementos en unList<KeyValuePair<string,int>> anulando el indexador.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    public class MyList : List<KeyValuePair<string, int>>
    {
        public int this[string key]
        {
            get
            {
                return base.Single(item => item.Key == key).Value;
            }
        }
    }
}

F, o alguna razón, el compilador arroja este error:

'System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<string,int>>'no contiene una definición para'Single'.

Si bien es cierto queList<T> no tiene ese método, debería ser visible porque es un método de extensión delSystem.Linq espacio de nombres (que está incluido). Obviamente usandothis.Single resuelve el problema, pero ¿por qué es el acceso a través debase ¿un error?

La sección 7.6.8 de la especificación de C # dice

Cuandobase.I ocurre en una clase o estructura,I debe denotar un miembro de la clase base de esa clase o estructura.

Lo que parece impedir el acceso al método de extensión a través debase. Sin embargo también dice

En tiempo de enlace, expresiones de acceso base del formulariobase.I ybase[E] son evaluados exactamente como si estuvieran escritos((B)this).I y((B)this)[E], dóndeB es la clase base de la clase o estructura en la que ocurre la construcción. Así,base.I ybase[E] corresponden a lasthis.I ythis[E]exceptothis se ve como una instancia de la clase base.

Sibase.I es como((B)this).I entonces parece que los métodos de extensión deberían permitirse aquí.

¿Alguien puede explicar la aparente contradicción en estas dos declaraciones?

Respuestas a la pregunta(1)

Su respuesta a la pregunta