Impossible de convertir type void en observable collections

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. 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. LstCategories c'est ma liste des catégories et non la liste box
      0
  2. 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. Ben oui, tu ne retourne pas de résultat
      0