Hallo,
ich kaue grad an nem Problem, dessen Ursache ich nicht verstehe…
Liegts an C#, hat die CLR nen Bug oder hab ich einfach was übersehen…?
Ich habe folgende Klassenhierarchie
------------------
| Basisklasse | (abstrakt)
------------------
| Add(object o) | ( public void virtual Add(...) { } )
------------------
^
|
------------------
| Basisklasse 2 | (abstrakt)
------------------
| Add(object o) | ( public void override Add(...) { } )
------------------
^
|
--------------------
| Eigentliche Klasse |
--------------------
| Add(object o) | ( public void override Add(...) { } )
--------------------
Im Code:
// Basisklasse 1
public abstract class Base1 {
public virtual void Add(object o) {
// nicht implementiert
}
}
// Basisklasse 2
public abstract class Base2 : Base1 {
public override void Add(object o) {
// auch hier nicht implementiert
}
}
// Eigentlich Klasse
public class myClass : Base2 {
public override void Add(object o) {
// Hier befindet sich die Implementierung
}
}
Im Client siehts folgendermaßen aus:
// Erstellen eines neuen Objektes vom Typ myClass
Base1 obj = new myClass();
// GetType() liefert den richtigen Typ, also "myClass" zurück
Type objType = obj.GetType();
// Und hier das Problem
// obj.Add(...) sollte eigentlich die Add-Methode in myClass ansprechen,
// ruft allerdings die Add-Methode in Base1 auf...
obj.Add(something);
Hab ich irgendwo nen Denkfehler?
Vielen Dank für Ratschläge
Dennis