Cs0029 Impossible de convertir implicitement le type string en Bll.Pays
Résolu/Fermé
danny243
Messages postés
74
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
16 octobre 2021
-
24 avril 2021 à 05:18
Whismeril Messages postés 19144 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 septembre 2024 - 25 avril 2021 à 21:13
Whismeril Messages postés 19144 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 septembre 2024 - 25 avril 2021 à 21:13
5 réponses
Whismeril
Messages postés
19144
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 septembre 2024
919
24 avril 2021 à 08:34
24 avril 2021 à 08:34
Bonjour
ID et Annee sont du type int, pour pouvoir les charger depuis ta base de données tu as dû les parser.
Int32.Parse est une méthode de conversion de string vers int que Microsoft a codée.
Le type « Pays » c’est toi qui l’as codé, c’est donc à toi de définir comment on convertit de string vers pays. Une fois la logique de conversion définie, tu as plusieurs options pour la mettre en œuvre:
ID et Annee sont du type int, pour pouvoir les charger depuis ta base de données tu as dû les parser.
Int32.Parse est une méthode de conversion de string vers int que Microsoft a codée.
Le type « Pays » c’est toi qui l’as codé, c’est donc à toi de définir comment on convertit de string vers pays. Une fois la logique de conversion définie, tu as plusieurs options pour la mettre en œuvre:
- une méthode dans ta classe de chargement des données qui prend le string en paramètre et qui renvoie un Pays
Pays = ConvertStringToPays(dt.Rows[i]["Pays"].ToString())
- une extension de string ToPays(), qui renvoie un Pays
Pays = dt.Rows[i]["Pays"].ToString().ToPays()
- une méthode static Parse de la classe Pays (enfin si Pays est une classe)
Pays = dt.Rows[i]["Pays"].ToString()
- un opérateur de conversion implicite qui définit ce que fait le = dans
Pays = Pays.Parse(dt.Rows[i]["Pays"].ToString())
- un opérateur de conversion explicite qui nécessite de caster
Pays = (Pays)dt.Rows[i]["Pays"].ToString()
- y’en a sûrement d’autres
danny243
Messages postés
74
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
16 octobre 2021
25 avril 2021 à 01:16
25 avril 2021 à 01:16
sauf que dans pays j'ai juste une proprieté et un attribut et une methode NotifyPropertyChanged(string propname) voilà ma classe Pays
using System; using System.Collections.Generic; using System.Text; using System.Data; using MySql.Data.MySqlClient; using System.ComponentModel; using DAL; namespace BLL { public class Pays: INotifyPropertyChanged { public void NotifyPropertyChanged(string propName) { if (this.PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propName)); } } private string nomPays; public string NomPays { get { return nomPays; } set { if (this.nomPays != value) { this.nomPays = value; this.NotifyPropertyChanged("NomPays"); } } } public event PropertyChangedEventHandler PropertyChanged; } }
Whismeril
Messages postés
19144
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 septembre 2024
919
25 avril 2021 à 08:38
25 avril 2021 à 08:38
Bonjour
alors dans ce cas, une initialisation / affectation est possible
Tu peux aussi ajouter un constructeur à ta classe Pays, qui prendrait une string ou même carrément le type de dt.Rows[i]["Pays"] en paramètre et affecterait la propriété MomPays.
Mais avec les éléments que tu m'a montré, je m'interroge sur l'utilité de cette classe.
Bref en l'état, il me semble que la propriété Pays de la classe Film serait une string, ton code serait plus simple.
alors dans ce cas, une initialisation / affectation est possible
Pays = new Pays {MonPays = dt.Rows[i]["Pays"].ToString() }
Tu peux aussi ajouter un constructeur à ta classe Pays, qui prendrait une string ou même carrément le type de dt.Rows[i]["Pays"] en paramètre et affecterait la propriété MomPays.
Mais avec les éléments que tu m'a montré, je m'interroge sur l'utilité de cette classe.
- Une seule propriété
- Pas de méthode
- Pas d'évènement (à part propertychanged)
Bref en l'état, il me semble que la propriété Pays de la classe Film serait une string, ton code serait plus simple.
danny243
Messages postés
74
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
16 octobre 2021
25 avril 2021 à 20:39
25 avril 2021 à 20:39
okay d"acoord merci bien
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Whismeril
Messages postés
19144
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 septembre 2024
919
25 avril 2021 à 21:13
25 avril 2021 à 21:13
de rien
25 avril 2021 à 01:17