Скрыть метод базового класса в универсальном производном классе
У меня есть базовый класс, как это:
class FooBase
{
public bool Do(int p) { /* Return stuff. */ }
}
И детский класс, как это:
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);
}
}
Если пользователь создаетFoo<string>
объект называется "fooString", тогда он может вызвать обаfooString.Do(5)
а такжеfooString.Do("test")
но если он создаетFoo<int>
объект называется "fooInt", он может вызывать только метод Do производного класса. Я предпочитаю второе, независимо от того, чтоT
является.
Методы Do в обоих этих классах по сути делают одно и то же. Тот, что в производном классе, получает целое число отDictionary<T, int>
используя данный параметр и вызывает метод Do базового класса, используя его.
Вот почему я хочу скрыть метод DoFooBase
вFoo<T>
, Как я могу добиться этого или что-то подобное? Любой совет дизайна, чтобы преодолеть это также было бы хорошо.