none
[WPF] Unable to cast object of type 'MS.Internal.NamedObject'

    Discussion générale

  • Bonjour, l'erreur est dans le titre, voici le contexte :

    J'ai deux listes qui contiennent toutes les deux des objets nommés "Formulations" avec deux champs "num" et "text"

    Ces deux listes sont remplies dans deux fonctions différentes, une qui va chercher des données dans un fichier Excel, l'autre dans un fichier Access.

    Dans ces fonction j'ai bien veillé à instancier un objet "Formulation" et d'y affecter le num et le text récupéré des différents fichiers.

    Jusqu'ici tout fonctionne à merveille, mes deux datagrid sont bien remplis avec mes deux listes, en mode pas à pas, quand je verifie le type d'objet contenu dans mes listes j'ai bien des objets "Formulation".

    Mais, quand j'essai de comparer deux objets de chaque liste, j'obtient le message d'erreur :/

    Unable to cast object of type 'MS.Internal.NamedObject' To Type "checkParam.Formulation"

    Je cherche depuis des heures pas moyen de trouver une solution :s


    mardi 3 mai 2016 14:10

Toutes les réponses

  • Bonjour,

    Est-ce que votre class Formulation implémente System.IComparable? Est-ce possible de voir le code qui compare 2 objets de chaque liste ?

    mardi 3 mai 2016 15:42
  • Alors en fait j'ai trouvé une solution :

    (FormExcel et FormAccess étant des objets Formulations)

    Avant je castais les lignes du datagrid comme ceci : 

       formExcel = ((Formulations)dgvExcel.Items[i]);
       formAccess = ((Formulations)dgvAccess.Items[i]);

    En faisant ceci ça fonctionne parfaitement :

           formExcel = ((Formulations)dgvExcel.Items[i]);
           formAccess = dgvAccess.Items[i] as Formulations;



    • Modifié Galiolas mardi 3 mai 2016 15:54
    mardi 3 mai 2016 15:53
  • Oui tant que dgvAccess.Items[i] est un objet de type Formulations (ou une classe dérivée), ca fonctionnera. Sinon formAccess vaudra null. Et votre comparaison risque fort de ne pas donner le résultat escompté.
    mardi 3 mai 2016 16:21
  • Oui le soucis c'est que mes objets dans ma list et dans mon datagrid sont tous des objets formulations, pourtant il plante encore par exemple sur 

     foreach (Formulations row in dgvExcel.Items)

    {

    //code à executer

    }

    j'ai le même message d'erreur ici :/

    En mode pas à pas, quand je vais voir l'attribut items du datagrid j'ai bien une liste d'objets checkParam.Formulations mais me dit :

    Unable to cast object of type 'MS.Internal.NamedObject' to "checkParam.Formulations"

    • Modifié Galiolas mercredi 4 mai 2016 08:52
    mercredi 4 mai 2016 08:50
  • Bonjour, Galiolas,

    Veuillez consulter l'article en bas pour implémenter IComparable, comme Mr. Hellin avait déjà suggéré :
    IComparable.CompareTo, méthode (Object)
    Merci de nous tenir au courant.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 23 mai 2016 14:43
    Modérateur