Question

J'ai le code suivant:

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

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

qui génèrent une erreur de compilation, je me demande ce que je devrais utiliser le type générique TestProperty pour achive mon objectif d'avoir différents types du même nom dans la classe enfant?

Était-ce utile?

La solution

Oui, C # ne prend pas en charge les types de retour covariants. Vous pouvez en effet utiliser les médicaments génériques ici:

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

public class StringProperty : TestProperty<string>
{
}

Il n'y a pas besoin de passer outre à ce point -. Et même à moins que vous allez faire quoi que ce soit d'autre, vous pourriez aussi bien se débarrasser de StringProperty entièrement et il suffit d'utiliser TestProperty<string>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top