Ocultar um método de classe base em uma classe derivada genérica

Eu tenho uma classe base como esta:

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

E uma classe 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);
    }
}

Se o usuário criar umFoo<string> objeto chamado "fooString", então ele pode chamar tantofooString.Do(5) efooString.Do("test") mas se ele cria umFoo<int> objeto chamado "fooInt", ele só pode chamar o método Do da classe derivada. Eu prefiro o segundo não importa o que oT é.

Os métodos Do em ambas as classes essencialmente fazem a mesma coisa. Aquele na classe derivada recebe um inteiro de umDictionary<T, int> usando o parâmetro fornecido e chama o método Do da classe base usando-o.

É por isso que eu quero esconder o método Do daFooBase emFoo<T>. Como posso conseguir isso ou algo similar? Qualquer conselho de design para superar isso também seria bom.

questionAnswers(2)

yourAnswerToTheQuestion