Petit probl�me de serialisation
Bonjour, dans une classe manag�e j'ai d'autres instances de classes manag�es. Pour s�rialiser et d�s�rialiser ma classe principale, j'appelle directement un Runtime::Serialization::Formatters::Binary::BinaryFormatter.
Je rajoute l'attribut [Serializable] de l'assembleur au d�but de chaque d�claration de classe.
Le probl�me c'est que lorsque je d�s�rialise l'instance de la classe principale � partir d'un fichier je ne r�cup�re que les variables de l'instance tandis que les instances de classes manag�es prennent leur valeur par d�faut. Est-ce qu'il serait possible de faire le plus simple possible pour contourner ce probl�me. Est-ce que par exemple il est n�cessaire d'utiliser l'interface ISerializable ?
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
|
[Serializable]
public ref class A
{
public:
// ...
};
[Serializable]
public ref class B
{
public:
// ...
A ^pA;
};
int main(...)
{
Runtime::Serialization::Formatters::Binary::BinaryFormatter ^bf;
bf = gcnew Runtime::Serialization::Formatters::Binary::BinaryFormatter;
B ^instance;
String ^filename = "...";
// Serialisation
IO::StreamWriter ^writer = gcnew IO::StreamWriter(filename);
bf->Serialize(writer->BaseStream, instance);
writer->Close();
// Deserialisation
IO::StreamReader ^reader = gcnew IO::StreamReader(filename);
instance = (B^) (bf->Deserialize(reader->BaseStream));
reader->Close();
// A n'est pas initialisé à partir des paramètres déclarés à la sérialisation
//...
} |