Pregunta

Tengo siguiente código:

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

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

que generan error de compilación, me pregunto por qué tengo que usar de tipo genérico en TestProperty con el fin de achive mi objetivo de tener diferentes tipos del mismo nombre en la clase hija?

¿Fue útil?

Solución

Sí, C # no admite tipos de retorno covariantes. Efectivamente, puedes utilizar los genéricos aquí:

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

public class StringProperty : TestProperty<string>
{
}

No hay necesidad de anular en este punto -. Y de hecho a menos que vas a hacer otra cosa, que también podría deshacerse de StringProperty por completo y sólo tiene que utilizar TestProperty<string>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top