Ukryj metodę klasy bazowej w generycznej klasie pochodnej

Mam taką klasę bazową:

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

I klasa podrzędna taka jak ta:

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);
    }
}

Jeśli użytkownik utworzyFoo<string> obiekt o nazwie „fooString”, wtedy może wywołać obafooString.Do(5) ifooString.Do("test") ale jeśli tworzyFoo<int> obiekt o nazwie „fooInt”, może wywoływać tylko metodę Do klasy pochodnej. Wolę drugi bez względu na to, coT jest.

Metody Do w obu tych klasach zasadniczo robią to samo. Ten w klasie pochodnej otrzymuje liczbę całkowitą od aDictionary<T, int> używając podanego parametru i wywołując metodę Do klasy bazowej.

Dlatego chcę ukryć metodę DoFooBase wFoo<T>. Jak mogę to osiągnąć lub coś podobnego? Wszelkie porady projektowe do pokonania byłyby również miłe.

questionAnswers(2)

yourAnswerToTheQuestion