Impossible de convertir type void en observable collections

danny243 -  
 Utilisateur anonyme -
Bonjour, j'ai une méthode de type void qui lit monfichier.json et elle est static ensuite dans mon mainWindow j'ai créé une observableCollection pour contenir la liste des catégories . je veux être capable d'assigner à ma ObservableCollection le contenu de chaque ligne de monFichier sauf que j'ai une erreur qui dit :
Erreur CS0029 Impossible de convertir implicitement le type 'void' en 'System.Collections.ObjectModel.ObservableCollection<TP2_JeuxSociete.CategorieJeu>' TP2_JeuxSociete
voilà une partie de mon code pouvez-vous m'aider

  
public static ObservableCollection<JeuSociete> jeu = new ObservableCollection<JeuSociete>();
        public static ObservableCollection<CategorieJeu> cat = new ObservableCollection<CategorieJeu>();
        private List<CategorieJeu> catSelected = new List<CategorieJeu>();
        static int   min = 1;
        static int max = 5;
        Intervalle i = new Intervalle(min, max);


        private const string NOM_FICHIER = "ListeJeuSociete.json";
        public MainWindow()
        {
            InitializeComponent();
             jeu = JeuSociete.ChargerListeJeux();//on affecte jeu
    
           //Voila mon erreur
            cat = CategorieJeu.ChargerListeCategories();

            lstCatJeu.ItemsSource = cat;
            lsbMesCategories.ItemsSource = cat;

            dgListeJeux.ItemsSource = jeu;
      
            lsJeu.ItemsSource = jeu;

        }


//La méthode qui lit le fichier.json

  public static void ChargerListeCategories()
      {
            string[] lignes = System.IO.File.ReadAllLines(NOM_FICHIER);

            foreach (string ligne in lignes)
            {
                LstCategories.Add(new CategorieJeu(ligne));
            }
      }



2 réponses

  1. Utilisateur anonyme
     
    Une méthode de void n'as pas de type.

    Ecrire
    cat = CategorieJeu.ChargerListeCategories();
    reviens plus ou moins à dire cat = rien ou vide (attention pas null, null ça a une valeur)

    Si tu veux pouvoir écrire ça, il faut que
    • la méthode ait un type
    • ce type soit compatible de la variable à affecter
    • la méthode retourne un résultat.
    • le résultat est compatible du type de la méthodes


    Par exemple
    double UneMethode()
    {
          return 1;//un entier est compatible avec un double => ça fonctionne
    }
    


    Si tu écris
    bool leBooleen = UneMethode(); // un bool n'est pas compatible avec un double => ça ne fonctionne pas


    Mais tu peux aussi faire en sorte que ta méthode remplisse la collection cat comme (ou à la place ? ) elle remplie la collection LstCategories.

    PS si LstCategories c'est toujours ta listbox, alors le plus judicieux serait de binder cette listbox sur ta collection

    0
    1. danny243
       
      LstCategories c'est ma liste des catégories et non la liste box
      0
  2. danny243
     
    Et si je faisais ça me dit les chemins code ne retournent pas tous une valeur
      public static ObservableCollection<CategorieJeu>ChargerListeCategories()
          {
                string[] lignes = System.IO.File.ReadAllLines(NOM_FICHIER);
    
                foreach (string ligne in lignes)
                {
                    LstCategories.Add(new CategorieJeu(ligne));
                }
          }
    
    
    
    
    0
    1. Utilisateur anonyme
       
      Ben oui, tu ne retourne pas de résultat
      0