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.