次のような基本クラスがあります。
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>ます。どうすればこれまたは同様のことを達成できますか? これを克服するための設計上のアドバイスもいいでしょう。