Ocultar un método de clase base en una clase derivada genérica

Tengo una clase base como esta:

class FooBase
{
    public bool Do(int p) { /* Return stuff. */ }
}

Y una clase infantil como esta:

class Foo<T> : FooBase
{
    private Dictionary<T, int> Dictionary;

    public bool Do(T p)
    {
        int param;
        if (!Dictionary.TryGetValue(p, out param))
            return false;
        return base.Do(param);
    }
}

Si el usuario crea unFoo<string>&nbsp;objeto llamado "fooString", entonces él puede llamar a ambosfooString.Do(5)&nbsp;yfooString.Do("test")&nbsp;pero si crea unFoo<int>&nbsp;objeto llamado "fooInt", solo puede llamar al método Do de la clase derivada. Prefiero el segundo no importa cualT&nbsp;es.

Los métodos Do en ambas clases hacen esencialmente lo mismo. El de la clase derivada obtiene un número entero de unaDictionary<T, int>&nbsp;usando el parámetro dado y llama al método Do de la clase base usándolo.

Es por eso que quiero ocultar el método Do delFooBase&nbsp;enFoo<T>. ¿Cómo puedo lograr esto o algo similar? Cualquier consejo de diseño para superar esto también sería bueno.