我有一个这样的基类:
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>
使用给定参数从 a 中获取一个整数,并使用它调用基类的 Do 方法。
这就是为什么我要隐藏FooBase
in的 Do 方法Foo<T>
。我怎样才能做到这一点或类似的东西?任何克服这个问题的设计建议也很好。