Eine Basisklassenmethode in einer generischen abgeleiteten Klasse ausblenden
Ich habe eine Basisklasse wie diese:
class FooBase
{
public bool Do(int p) { /* Return stuff. */ }
}
Und eine Kinderklasse wie diese:
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);
}
}
Wenn der Benutzer eineFoo<string>
Objekt namens "fooString", dann kann er beide aufrufenfooString.Do(5)
undfooString.Do("test")
aber wenn er schafft einFoo<int>
Objekt mit dem Namen "fooInt", er kann nur die Do-Methode der abgeleiteten Klasse aufrufen. Ich bevorzuge die zweite, egal was dieT
ist.
Die Do-Methoden in beiden Klassen machen im Wesentlichen dasselbe. Der in der abgeleiteten Klasse erhält eine Ganzzahl von aDictionary<T, int>
Verwenden Sie den angegebenen Parameter und rufen Sie die Do-Methode der Basisklasse auf, die sie verwendet.
Deshalb möchte ich die Do - Methode von versteckenFooBase
imFoo<T>
. Wie kann ich das erreichen oder so? Jeder mögliche Entwurfsrat, zum dieses zu überwinden, würde auch nett sein.