Forum: PC-Programmierung serialisieren eines Array von Klassen


von Power (Gast)


Lesenswert?

Hi

ich habe hier einen C# codeausschnitt und versuche den in C++ .net um 
zuschreiben. Bis auf das Serialisieren des Arrays geht alles. Wenn ich 
aber den Arrayzeiger zum serialisieren übergebe kommt ne Fehlermeldung.

hier mal der C# Code:

{
  Person[] personen = new Person[2] { new ......}

  XMLSeriializer serializer = new XMLSerializer(typeof(Person[]));
  TextWriter tr = new StremWriter("A.xml");
  serializer.Serialize(tr, personen);
  tr.close();
}


public class Person
{
  public Person(string name, int alter)
 {
  ...
 }
}

von harle (Gast)


Lesenswert?

Hi,

der äquivalente C++ .NET(2005) Code sollte so aussehen :

{
array<Person^> ^personen = gcnew array<Person^>(2) { gcnew ... };

XmlSerializer ^serializer = gcnew XmlSerializer(array<Person^>::typeid);
TextWriter ^tr = gcnew StreamWriter("A.xml");
serializer->Serialize(tr, personen);
tr->Close();
}

Gruß

von Power (Gast)


Lesenswert?

besten Dank harle

werd es dann gleich mal ausprobieren

Power

von Power (Gast)


Lesenswert?

also das serialisieren geht jetztsuper.
Leider habe ich ein ähnliches Problem be deserialisieren.
Ich hoffe harle hat auch dafür ne Idee.

Hier der C# Code

Person[] personen = (Person[])serializer.Derzerialize(tr);

mit array<Person^> personen = (array<Person^>) 
serializer->Derzerialize(tr);
gehts leider nicht


Power

von Harald L. (harle)


Lesenswert?

meine Idee ...

XmlSerializer ^serializer = gcnew XmlSerializer(array<Person^>::typeid);
TextReader ^tr = gcnew StreamReader("B.xml");
array<Person^> ^personen = nullptr;
try
{
  personen = safe_cast<array<Person^>>( serializer->Deserialize(tr) );
}
catch(InvalidCastException^)
{
  Console::WriteLine("Cast hat nicht geklappt");
}


harle

von Power (Gast)


Lesenswert?

Danke für die Antwort

werd es mal ausprobieren.

Power

von Power (Gast)


Lesenswert?

Danke Harald geht wunderbar

Power

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.