¿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>>&nbsp;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>&nbsp;no tiene ese método, debería ser visible porque es un método de extensión delSystem.Linq&nbsp;espacio de nombres (que está incluido). Obviamente usandothis.Single&nbsp;resuelve el problema, pero ¿por qué es el acceso a través debase&nbsp;¿un error?

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

Cuandobase.I&nbsp;ocurre en una clase o estructura,I&nbsp;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&nbsp;ybase[E]&nbsp;son evaluados exactamente como si estuvieran escritos((B)this).I&nbsp;y((B)this)[E], dóndeB&nbsp;es la clase base de la clase o estructura en la que ocurre la construcción. Así,base.I&nbsp;ybase[E]&nbsp;corresponden a lasthis.I&nbsp;ythis[E]exceptothis&nbsp;se ve como una instancia de la clase base.

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

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