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?

È stato utile?

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
scroll top