Visual C++ .NET/File Directory/Serializable
Mark class as Serializable
<source lang="csharp">
- include "stdafx.h"
using namespace System; using namespace System::IO; using namespace System::Runtime::Serialization::Formatters::Binary; [Serializable] ref class RoleAttr{ public:
property int Wisdom; RoleAttr(int Wis); void Print();
}; RoleAttr::RoleAttr(int Wis) {
this->Wisdom = Wis;
} void RoleAttr::Print() {
Console::WriteLine("Wis: {1}", Wisdom);
} [Serializable] ref class Role{ public:
property String ^Name; property String ^Race; property String ^Class; property RoleAttr ^pattr;
Role (String ^Name, String ^Race, String ^Class,int Wis); void Print();
}; Role::Role (String ^Name, String ^Race, String ^Class,int Wis) {
this->Name = Name; this->Race = Race; this->Class = Class; this->pattr = gcnew RoleAttr(Wis);
} void Role::Print() {
Console::WriteLine("Name: {0}", Name); Console::WriteLine("Race: {0}", Race); Console::WriteLine("Class: {0}", Class); pattr->Print();
} void main() {
Role ^r = gcnew Role("r", "Human", "Thief", 11); r->Print(); FileStream ^plStream = File::Create("Role.dat"); BinaryFormatter ^bf = gcnew BinaryFormatter(); bf->Serialize(plStream, r); plStream->Close(); plStream = File::OpenRead("Role.dat"); Role ^rClone = (Role^)bf->Deserialize(plStream); plStream->Close(); rClone->Print();
}
</source>
Serialize nested classes
<source lang="csharp">
- include "stdafx.h"
using namespace System; using namespace System::IO; using namespace System::Runtime::Serialization::Formatters::Binary; [Serializable] ref class RoleAttr{ public:
property int Wisdom; RoleAttr(int Wis); void Print();
}; RoleAttr::RoleAttr(int Wis) {
this->Wisdom = Wis;
} void RoleAttr::Print() {
Console::WriteLine("Wis: {1}", Wisdom);
} [Serializable] ref class Role{ public:
property String ^Name; property String ^Race; property String ^Class; property RoleAttr ^pattr;
Role (String ^Name, String ^Race, String ^Class,int Wis); void Print();
}; Role::Role (String ^Name, String ^Race, String ^Class,int Wis) {
this->Name = Name; this->Race = Race; this->Class = Class; this->pattr = gcnew RoleAttr(Wis);
} void Role::Print() {
Console::WriteLine("Name: {0}", Name); Console::WriteLine("Race: {0}", Race); Console::WriteLine("Class: {0}", Class); pattr->Print();
} void main() {
Role ^r = gcnew Role("r", "Human", "Thief", 11); r->Print(); FileStream ^plStream = File::Create("Role.dat"); BinaryFormatter ^bf = gcnew BinaryFormatter(); bf->Serialize(plStream, r); plStream->Close(); plStream = File::OpenRead("Role.dat"); Role ^rClone = (Role^)bf->Deserialize(plStream); plStream->Close(); rClone->Print();
}
</source>