Bonjour,
Je suis entrain de realiser un Mappeur avec de generè des carte de jeux 2D pour un petit jeu que je voudrais realiser.
Ce mappeur possederas des ressources (nom, image, hauteur, largeur) qui seront utiliser lors de la realisation des cartes
La serialization se fait très bien mais lors de la deserialization j'obtient
mon objet "Ressource" possede des accesseurs sur tout ses champs, une constructeur de base et un autre avec parametre.Le constructeur est introuvable pour désérialiser un objet de type MedievalWars_Mapping.Ressource
Ressource.cs
Serialization
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 using System; using System.Drawing; using System.Runtime.Serialization; using System.Windows; namespace MedievalWars_Mapping { [Serializable] public class Ressource : ISerializable { #region Accesseurs private string _nom; public string Nom { get { return _nom; } set { _nom = value; } } private int _hauteur; public int Hauteur { get { return _hauteur; } set { _hauteur = value; } } private int _largeur; public int Largeur { get { return _largeur; } set { _largeur = value; } } private Image _image; public Image Image { get { return _image; } set { _image = value; } } #endregion #region Constructeurs public Ressource() { MessageBox.Show("constructeur par default"); } public Ressource(string nom, int hauteur, int largeur, Image image) { _nom = nom; _hauteur = hauteur; _largeur = largeur; _image = image; } #endregion #region ISerializable Membres public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("Nom", _nom, typeof(string)); info.AddValue("Hauteur", _hauteur, typeof(int)); info.AddValue("Largeur", _largeur, typeof(int)); info.AddValue("Image", _image, typeof(Image)); } #endregion } }
Deserialization:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 System.Drawing.Image img = new System.Drawing.Bitmap(txtUri.Text); Ressource r = new Ressource(txtNomRessource.Text, int.Parse(txtHauteur.Text), int.Parse(txtLargeur.Text), img); string startPath = ""; for (int i = 0; i < Assembly.GetExecutingAssembly().Location.Split('\\').Length - 1; i++) startPath += Assembly.GetExecutingAssembly().Location.Split('\\')[i] + "\\"; BinaryFormatter binaryFormatter = new BinaryFormatter(); Stream stream = File.OpenWrite(startPath + @"Ressources\map1.mw_map"); binaryFormatter.Serialize(stream, r); stream.Close();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 try { string startPath = ""; for (int i = 0; i < Assembly.GetExecutingAssembly().Location.Split('\\').Length - 1; i++) startPath += Assembly.GetExecutingAssembly().Location.Split('\\')[i] + "\\"; IFormatter binaryFormatter = new BinaryFormatter(); Stream stream = File.OpenRead(startPath + @"Ressources\map1.mw_map"); ressourceSelectionner = (Ressource)binaryFormatter.Deserialize(stream); stream.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); }
merci pour votre aide, j'ai analyser de nombreux code de serialization sur internet et la je ne vois pas vraiment
Partager