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> objeto llamado "fooString", entonces él puede llamar a ambosfooString.Do(5) yfooString.Do("test") pero si crea unFoo<int> objeto llamado "fooInt", solo puede llamar al método Do de la clase derivada. Prefiero el segundo no importa cualT 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> 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 enFoo<T>. ¿Cómo puedo lograr esto o algo similar? Cualquier consejo de diseño para superar esto también sería bueno.

Respuestas a la pregunta(2)

Su respuesta a la pregunta