xmlserializer eigene Objekte
-
Hi
ich habe im Netz ein C# Codebeispiel gefunden das ich gern in C++ .net
umschreiben würde. Leider klappt es nicht so wie ich will. Kann jemand helfen ?//.. using System.Xml.Serialization, System.IO;
private void Form1_Load(object sender, System.EventArgs e)
{
Person[] personen = new Person[2]
{new Person("Frank", 43), new Person("Rainer", 25)};
PersonenSchreiben(personen); personen = null;
personen = PersonenEinlesen();
}static string dateiPfad = "personen.xml";
static public Person[] PersonenEinlesen()
{
XmlSerializer serializer = new XmlSerializer(typeof(Person[]));
TextReader tr = new StreamReader(dateiPfad);
Person[] personen = (Person[])serializer.Deserialize(tr); tr.Close();
return personen;
}static public void PersonenSchreiben(Person[] personen)
{
XmlSerializer serializer = new XmlSerializer(typeof(Person[]));
TextWriter tr = new StreamWriter(dateiPfad);
serializer.Serialize(tr, personen); tr.Close();
}public class Person
{
public Person(string name, int alter)
{
this.Name = name;
this.Alter= alter;
}public Person(){}
private string name;
public string Name
{
get{return name;}
set{name= value;}
}private int alter;
public int Alter
{
get{return alter;}
set{alter= value;}
}
}
-
Was klappt denn nicht? Zeig doch mal Deinen Versuch!
-
//die zu serialisierende Klasse:
public ref class RC5_settings
{
public:
RC5_settings(void);
public:
RC5_settings(int tastencode, int ausgang, int ausgang_status)
{
Tastencode = tastencode & 0x3F;
Ausgang = ausgang & 0x3f;
Ausgang_Status = ausgang_status & 0xff;
};
public:
int Tastencode;
int Ausgang;
int Ausgang_Status;};
private: array <RC5_settings^> ^rc5_set;
rc5_set = gcnew array <RC5_settings^> (16);//per Tastendruck werden die 16 Instanzen initialisiert
rc5_set[i] = gcnew RC5_settings(RX_CAN_MSG.DATA[1],RX_CAN_MSG.DATA[2],RX_CAN_MSG.DATA[3]);//soweit so gut
String ^DateiPfad = "RC5_settings.xml";
// und hier liegt mein Problem, der XMLSerializer weis nur die Klasse aufgebaut ist, aber nicht das ich 16mal das ganze
// serialisieren will
// mit einen Klassenojekt geht es einwandfrei// in C# schreibt man ja xmlSerializer(typeof(RC5_settings[]));
XmlSerializer ^serializer = gcnew XmlSerializer(RC5_settings::typeid);
TextWriter ^tr = gcnew StreamWriter(DateiPfad);
// und hier serializer.Serialize(tr,rc5_set);
serializer->Serialize(tr,rc5_set);
tr->Close();