J'ai une classe qui a un type générique "G"
Dans mon modèle de classe, j'ai
public class DetailElement : ElementDefinition
Disons que j'ai une méthode comme celle-ci
public void DoSomething<G>(G generic)
where G : ElementDefinition
{
if (generic is DetailElement)
{
((DetailElement)generic).DescEN = "Hello people"; //line 1
//////
ElementDefinition element = generic;
((DetailElement)element).DescEN = "Hello again"; //line 3
//////
(generic as DetailElement).DescEN = "Howdy"; //line 5
}
else
{
//do other stuff
}
}
Le compilateur signale une erreur à la ligne 1 :
Cannot convert type 'G' to 'DetailElement'
Mais la ligne 3 fonctionne bien. Je peux contourner ce problème en exécutant le code écrit à la ligne 5.
Ce que je voudrais savoir, c'est pourquoi le compilateur signale l'erreur de la ligne 1 et pas celle de la ligne 3, étant donné que, pour autant que je sache, elles sont identiques.
edit : je crains d'avoir oublié un élément important de la logique du cadre.
edit2 : Bien que les solutions à l'erreur du compilateur soient importantes, ma question porte sur la raison pour laquelle le compilateur signale une erreur à la ligne 1 et non à la ligne 3.