Pergunta

Eu tenho seguinte código:

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

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

que geram erro de compilação, eu quero saber que eu deveria ter que usar tipo genérico em TestProperty, a fim de achive meu objetivo de ter o tipo diferente de mesmo nome na classe criança?

Foi útil?

Solução

Sim, C # não suporta tipos de retorno covariantes. Você pode realmente usar os genéricos aqui:

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

public class StringProperty : TestProperty<string>
{
}

Não há necessidade de substituir neste momento -. E, de fato, a menos que você está indo para fazer qualquer outra coisa, assim como você pode se livrar de StringProperty inteiramente e apenas TestProperty<string> uso

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top