none
La méthode spécifiée n'est pas prise en charge RRS feed

  • Question

  • Bonjour,

    Je viens de changer d'ordinateur et depuis j'ai du code (en Visual Studio 2012 Ultimate) qui ne fonctionne plus. La nouvelle machine est comme l'ancienne, sous windows 7. J'ai beau chercher je ne comprends pas. Le message d'erreur à l'exécution est :

    "La méthode spécifiée n'est pas prise en charge".

    Voici le code qui ne fonctionne plus, j'ai mis la ligne en question en gras :

    Bien sûr je suis à jour concernant les mises à jour.

    Merci d'avance pour votre aide.

    using System;
    using System.Reflection;
    using System.Windows.Controls;
    
    namespace Repertoire.Personne.Control {
    
      public class ComboBoxIF : ComboBox {
    
        public ComboBoxIF() {
          DropDownOpened += combobox_DropDownOpened;
          DropDownClosed += combobox_DropDownClosed;
        }
    
        private void combobox_DropDownOpened(Object sender, EventArgs e) {
    
            this.Items.Filter = new  System.Predicate<object>(Contains);
    
        }
    
        private void combobox_DropDownClosed(object sender, EventArgs e) {
          this.Items.Filter = null;
        }
    
        public bool Contains(object de) {
    
            PropertyInfo  r = de.GetType().GetProperty("B_ACTIF");
            if (r != null)
                return (Boolean) r.GetValue(de, null);
            else return true;
        }
      }
    }


    TEDFR



    • Modifié TEDFR vendredi 31 août 2012 09:54
    vendredi 31 août 2012 09:51

Réponses

  • html,body{padding:0;margin:0;font-family:Verdana,Geneva,sans-serif;background:#fff;}html{font-size:100%}body{font-size:.75em;line-height:1.5;padding-top:1px;margin-top:-1px;}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em}h3{font-size:1.16em}h4{font-size:1em}h5{font-size:.83em}h6{font-size:.7em}p{margin:0 0 1em;padding:0 .2em}.t-marker{display:none;}.t-paste-container{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}ul,ol{padding-left:2.5em}a{color:#00a}code, pre{font-size:1.23em}
    Bonsoir,

    J'ai trouvé la raison de mon problème. J'ai transformé un peu vite mes requêtes linq suite aux propositions de ReSharper, et ai oublié de faire un ToList() à la fin.

    Voici un exemple de requête invalide :

    public IEnumerable<PAR_PAYS> GetPaysAVECBUG()
            {
                return (entities.PAR_PAYS.OrderBy(p => p.I_PAYS));
            }

    Voici la requête valide :

    public IEnumerable<PAR_PAYS> GetPaySANS)
            {
                return (entities.PAR_PAYS.OrderBy(p => p.I_PAYS)).ToList()
            }

    Merci à tous les 2 pour votre aide.


    TEDFR

    • Marqué comme réponse TEDFR mardi 4 septembre 2012 10:33
    mardi 4 septembre 2012 10:33

Toutes les réponses

  • Bonjour,

    Visual Studio 2012 fonctionne par default avec le framework 4.5

    Soit vous devez installer le framework 4.5 sur votre nouveau PC

    Soit vous devez cibler le framework 4.0 ou 3.5 dans votre projet (click droit sur le projet puis propriétés)

    La méthode Predicate expliquée sur MSDN

    Pour connaitre la version du framework, il suffit d'aller dans

    C:\Windows\Microsoft.NET\Framework


    fred on youTube
    PHP MySQL Web Site Creator
    fred


    • Modifié fred75 vendredi 31 août 2012 15:29
    vendredi 31 août 2012 15:07
  • Bonjour et merci pour ta réponse.

    J'utilise bien le framework 4.5 dans Visual Studio 2012.

    Mais j'ai aussi le même problème dans Visual Studio 2010 avec le Framework 4.

    Pour info j'ai les 2 versions de Visual installées sur mon nouveau portable. Mais j'avais aussi les 2 versions sur mon ancien portable. Sauf que c'était la version RC 2012.

    Autre info le problème ne se produit que lorsque l' ItemSource de la combobox est alimenté à partir d'un IEnumerable via Entity.

    Avec un ObservableCollection je n'ai pas de problème.

    Je ne comprends pas ce qui a changé, car ce code tournait sans problème depuis plusieurs mois.


    TEDFR

    lundi 3 septembre 2012 10:32
  • Bonjour,

    Essaye de réinitialiser la Combobox.items et s'assurer que la source IEnumerable n'est pas vide déjà.

    lundi 3 septembre 2012 16:47
  • html,body{padding:0;margin:0;font-family:Verdana,Geneva,sans-serif;background:#fff;}html{font-size:100%}body{font-size:.75em;line-height:1.5;padding-top:1px;margin-top:-1px;}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em}h3{font-size:1.16em}h4{font-size:1em}h5{font-size:.83em}h6{font-size:.7em}p{margin:0 0 1em;padding:0 .2em}.t-marker{display:none;}.t-paste-container{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}ul,ol{padding-left:2.5em}a{color:#00a}code, pre{font-size:1.23em}
    Bonsoir,

    J'ai trouvé la raison de mon problème. J'ai transformé un peu vite mes requêtes linq suite aux propositions de ReSharper, et ai oublié de faire un ToList() à la fin.

    Voici un exemple de requête invalide :

    public IEnumerable<PAR_PAYS> GetPaysAVECBUG()
            {
                return (entities.PAR_PAYS.OrderBy(p => p.I_PAYS));
            }

    Voici la requête valide :

    public IEnumerable<PAR_PAYS> GetPaySANS)
            {
                return (entities.PAR_PAYS.OrderBy(p => p.I_PAYS)).ToList()
            }

    Merci à tous les 2 pour votre aide.


    TEDFR

    • Marqué comme réponse TEDFR mardi 4 septembre 2012 10:33
    mardi 4 septembre 2012 10:33