Wie die Art eines Mitglieds in der abstrakten Klasse in der Kinderklasse außer Kraft setzen
-
18-09-2019 - |
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?
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