次のような基本クラスがあります。
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)
が、「fooInt」fooString.Do("test")
というオブジェクトを作成するFoo<int>
と、派生クラスの Do メソッドしか呼び出すことができません。私はそれが何であれ、2番目を好みT
ます。
これら両方のクラスの Do メソッドは、基本的に同じことを行います。派生クラスのものは、指定されたパラメーターを使用して から整数を取得し、Dictionary<T, int>
それを使用して基本クラスの Do メソッドを呼び出します。
FooBase
そのため、 inの Do メソッドを非表示にしたいと考えていFoo<T>
ます。どうすればこれまたは同様のことを達成できますか? これを克服するための設計上のアドバイスもいいでしょう。