j'ai une classe qui a un type générique « G »compilateur ne parvient pas la conversion d'un type générique contraint
Dans mon modèle de classe j'ai
public class DetailElement : ElementDefinition
Disons que j'ai une méthode comme celui-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
}
}
compilateur signale une erreur dans la ligne 1:
Cannot convert type 'G' to 'DetailElement'
Mais la ligne 3 fonctionne bien. Je peux résoudre ce problème en faisant le code écrit dans la ligne 5.
Ce que je voudrais savoir est pourquoi le compilateur signale l'erreur dans la ligne 1 et non celle de la ligne 3, étant donné que, dans la mesure comme je le sais, ils sont identiques.
modifier: Je crains que je pourrais être absent une partie importante de la logique du cadre
de Edit2: Bien que les solutions pour l'erreur du compilateur sont importants, ma question est de savoir pourquoi le compilateur signale une erreur sur la ligne 1 et pas dans la ligne 3.
Par souci de simplicité, je ne l'ai pas mis le tout code ici. je vais l'éditer pour être correct –