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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage