Impossible de convertir type void en observable collections

Signaler
Messages postés
50
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
18 avril 2021
-
Messages postés
15828
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 avril 2021
-
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

Messages postés
15828
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 avril 2021
689
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

Messages postés
50
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
18 avril 2021

LstCategories c'est ma liste des catégories et non la liste box
Messages postés
50
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
18 avril 2021

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));
            }
      }



Messages postés
15828
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 avril 2021
689
Ben oui, tu ne retourne pas de résultat