Impossible de convertir type void en observable collections

Fermé
danny243 Messages postés 74 Date d'inscription vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021 - 30 mars 2021 à 20:16
 Utilisateur anonyme - 30 mars 2021 à 22:34
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));
            }
      }



A voir également:

2 réponses

Utilisateur anonyme
30 mars 2021 à 21:03
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
danny243 Messages postés 74 Date d'inscription vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021
30 mars 2021 à 21:05
LstCategories c'est ma liste des catégories et non la liste box
0
danny243 Messages postés 74 Date d'inscription vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021
30 mars 2021 à 21:07
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
Utilisateur anonyme
30 mars 2021 à 22:34
Ben oui, tu ne retourne pas de résultat
0