Frage

Ich habe folgenden Code:

public abstract class TestProperty
{
    public abstract Object PropertyValue { get; set; }
}

public class StringProperty: TestProperty
{
    public override string PropertyValue {get;set}
}

, die Übersetzungsfehler erzeugen, frage ich mich, soll ich Gattung TestProperty zu verwenden, um habe mein Ziel, die unterschiedliche Art mit dem gleichen Namen in der Kinderklasse achive?

War es hilfreich?

Lösung

Ja, ist C # nicht kovarianten Rückgabetypen unterstützen. Sie können in der Tat Generika verwenden hier:

public abstract class TestProperty<T>
{
    public abstract T PropertyValue { get; set; }
}

public class StringProperty : TestProperty<string>
{
}

Es gibt keine Notwendigkeit, an dieser Stelle außer Kraft zu setzen -. Und in der Tat, es sei denn du gehst, etwas anderes zu tun, könnte man genauso gut los StringProperty bekommen ganz und nur TestProperty<string> verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top