Como substituir o tipo de um membro na classe abstrata na classe criança
-
18-09-2019 - |
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?
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