Wie die Rückkehr der Subtyp in der überschriebenen Methoden der Unterklasse in C#?

Habe ich eine Unterklasse mit einer über-geritten-Methode, die ich kenne immer wieder ein bestimmter Subtyp des Rückgabetyps der Deklaration in der Basisklasse. Wenn ich den code schreiben, der auf diese Weise, es wird nicht kompiliert. Da das wahrscheinlich nicht sinnvoll, lassen Sie mich ein code-Beispiel:

class BaseReturnType { }
class DerivedReturnType : BaseReturnType { }

abstract class BaseClass {
    public abstract BaseReturnType PolymorphicMethod();
}

class DerivedClass : BaseClass {
    //Compile Error: return type must be 'BaseReturnType' to match 
    //overridden member 'BaseClass.PolymorphicMethod()'
    public override DerivedReturnType PolymorphicMethod() { 
        return new DerivedReturnType(); 
    }
}

Gibt es eine Möglichkeit, dies in C#? Wenn nicht, was ist der beste Weg, etwas zu erreichen, ähnlich? Und warum ist es nicht erlaubt? Es scheint nicht, daß jede logische Inkonsistenz, da jedes Objekt zurückgegeben, die von der über-geritten-Methode noch is BaseReturnType. Vielleicht gibt es etwas, was ich nicht hatte, als wenn. Oder vielleicht der Grund ist die technologische oder historische.

Was bedeutet der complier sagen?
Ich habe den compiler-Fehler als Kommentar.

InformationsquelleAutor recursive | 2009-01-07

Schreibe einen Kommentar