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.