Je lis la question suivante (et je le résoudre de la même manière que la réponse donnée): Passing derived type as argument to abstract classméthodes génériques et le type de coulée
Mais pourquoi est-il pas en mesure de trouver l'attribut value
de la classe dérivée? même si j'ajouter un type moulé, il est impossible:
public abstract class baseClass
{
public abstract float function<T>(T a, T b) where T:baseClass;
}
public class derived: baseClass
{
public override float function<derived>(derived a, derived b)
{
// Here value is not found
return a.value + b.value;
}
public float value;
}
Exemple de type coulée est également ne fonctionne pas (et les conseils fonte de type redondant est affiché):
public abstract class baseClass
{
public abstract float function<T>(T a, T b) where T:baseClass;
}
public class derived: baseClass
{
public override float function<derived>(derived a, derived b)
{
// Here value is not found even with type cast
return ((derived)a).value + ((derived)b).value;
}
public float value;
}
Exemple avec le cast de type fonctionne - il est question de nommage. Renommez le paramètre de type générique en 'T', puis vous pouvez convertir en' derived'. – 2kay
@ 2kay merci pour l'indice –