Bonjour à tous !
Je commence à développer en C# et je me confronte déjà à pas mal de problèmes :
J'ai créé une classe sérialisable que voici :
Le fais d'avoir une méthode de chargement propre à chacune de mais classe ne me paraissait pas terrible, j'essaye donc de concevoir une fonction générique permettant de charger un objet à partir d'un fichier XML.La fonction "chargeXML" de ma classe connexion fonctionnait j'essaye de la rendre générique à fin de pouvoir charger n'importe quel type d'objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 using System; using System.Collections.Generic; using System.Text; using System.Runtime.Serialization; using System.Xml.Serialization; using System.IO; namespace mysql { public class connexion:ISerializable { public string login; public string mdp; public string serveur; public connexion(string sLogin, string sMdp, string sServeur) { login = sLogin; mdp = sMdp; serveur = sServeur; } public connexion() : this("","",""){ } public connexion(string chemin) { mysql.traitements.chargement.chargeXml(chemin, this); } //public void chargeXML(string chemin) //{ // if (File.Exists(chemin)) // { // XmlSerializer serializer = new XmlSerializer(typeof(connexion)); // TextReader reader = new StreamReader(chemin); // connexion maConnexion; // maConnexion = (connexion)serializer.Deserialize(reader); // login = maConnexion.login; // reader.Close(); // } //} void ISerializable.GetObjectData(SerializationInfo oInfo, StreamingContext oContext) { oInfo.AddValue("login", this.login); oInfo.AddValue("mdp", this.mdp); oInfo.AddValue("serveur", this.serveur); } } }
J'ai donc créé une classe chargement que voici :
Mes problèmes sont les suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Xml.Serialization; using System.Reflection; namespace mysql.traitements { public class chargement { public static void chargeXml(string chemin, object oObject) { if (File.Exists(chemin)) { XmlSerializer serializer = new XmlSerializer(oObject.GetType()); TextReader reader = new StreamReader(chemin); object monObjet; monObjet = (object)serializer.Deserialize(reader); // Boucle permettant de charger les attributs de l'objet à partir de l'XML PropertyInfo[] myPropertyInfo, myPropertyInfo2; // Get the properties of 'Type' class object. myPropertyInfo = Type.GetType(monObjet.GetType().ToString()).GetProperties(); for (int i = 0; i < myPropertyInfo.Length; i++) { Console.WriteLine(myPropertyInfo[i].ToString()); //login = maConnexion.login; //mdp = maConnexion.mdp; //serveur = maConnexion.serveur; } reader.Close(); } //else //{ // login = ""; // mdp = ""; // serveur = ""; //} } } }
1 Je ne parviens pas à lister les propriétés de mon objet :
me retourne un tableau vide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part myPropertyInfo = Type.GetType(monObjet.GetType().ToString()).GetProperties();
2 Je n'ai aucune idée de comment affecter la valeur charger à partir de mon xml à la propriété de mon objet :
Si vous pouviez m'éclairer un peu ce serait bien sympathique, n'hésitez pas à me donner des conseils sur l'approche du code, comme je l'expliquais je débute et je me doute bien que la lecture de mon code doit piquer les yeux avertis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part oObjet.(myPropertyInfo[i].ToString()) = monObjet.(myPropertyInfo[i].ToString())
Merci d'avance
Stéphane
Partager