[Deserialization] constructeur introuvable
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
Citation:
Le constructeur est introuvable pour désérialiser un objet de type MedievalWars_Mapping.Ressource
mon objet "Ressource" possede des accesseurs sur tout ses champs, une constructeur de base et un autre avec parametre.
Ressource.cs
Code:
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
}
} |
Serialization
Code:
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(); |
Deserialization:
Code:
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 :?