Come ignorare il tipo di un membro in classe astratta in classe bambino
-
18-09-2019 - |
Domanda
Ho seguente codice:
public abstract class TestProperty
{
public abstract Object PropertyValue { get; set; }
}
public class StringProperty: TestProperty
{
public override string PropertyValue {get;set}
}
che generano errore di compilazione, mi chiedo dovrei usare tipo generico in TestProperty per achive il mio obiettivo di avere vari tipi con lo stesso nome nella classe bambino?
Soluzione
Si, C # non supporta tipi restituiti covarianti. È infatti possibile utilizzare farmaci generici qui:
public abstract class TestProperty<T>
{
public abstract T PropertyValue { get; set; }
}
public class StringProperty : TestProperty<string>
{
}
Non c'è nessuna necessità di sovrascrivere a questo punto -. E infatti a meno che non si sta andando a fare qualsiasi altra cosa, si potrebbe anche sbarazzarsi di StringProperty
del tutto e basta usare TestProperty<string>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow