Documente Academic
Documente Profesional
Documente Cultură
Laborator 05 - Serializare
Laborator 05 - Serializare
Serializare
ex:
string data = “data de salvat”;
FileStream fs = new FileStream (“data.out”,
FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs,data);
fs.Close();
11/26/07 L3 .NET ADF - (C) Victor Adrian Prisacariu 4
Cum deserializam un obiect?
PAS1: Cream un stream din care vom citi
PAS2: Cream un obiect BinaryFormatter
PAS3: Cream un obiect in care vom salva datele deserializate
PAS4: Apelam metoda BinaryFormatter.Deserialize
ex:
FileStream fs = new FileStream(“data.out”, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
string data = (string)bf.Deserialize(fs);
fs.Close();
[Serializable]
class ObiectCumparat: IDeserializationCallback
{
public int productID;
public decimal pret;
public int cantitate;
[NonSerialized] public decimal total;
[OptionalField]public int taxe;
ex:
FileStream fs = new FileStream(“data.in”,
FileMode.Open);
SOAPFormatter bf = new SOAPFormatter();
string data = (string)bf.Deserialize(fs);
fs.Close();
Pentru a obtine compatibiliate maxima intre aplicatia voastra si
alte aplicatii ce vor deserializa datele puteti folosi atribute prin
care sa controlati formatul datelor scrise in stream-ul de iesire.
Pentru mai multe detali cititi la pagina 280 in cartea .NET .
11/26/07 L3 .NET ADF - (C) Victor Adrian Prisacariu 15
Serializare XML
XML este un format standardizat, bazat pe text, pentru
stocarea unor informatii ce pot fi citite usor de aplicatii.
XML foloseste un format de organizare a datelor de tip
arborescent.
XML poate fi folosit pentru stocarea oricarui tip de date
inclusiv documente, imagini, filme, muzica, etc.
.NET framework ofera mai multe biblioteci pentru citire
si scriere fisiere XML
ex:
FileStream fs = new FileStream(“data.out”,FileMode.Create);
XmlSerializer xmls = new XmlSerializer(typeof(DateTime));
xmls.Serialize(fs,DateTime.Now);
fs.Close();
ex:
FileStream fs = new FileStream(“data.out”,FileMode.Create);
XmlSerializer xmlDs = new XmlSerializer(typeof(DateTime));
DateTime dataTrecuta = (DateTime)xmlDs.Deserialize(fs);
fs.Close();
SerializationEntry
11/26/07 L3 .NET ADF - (C) Victor Adrian Prisacariu 29
[Serializable]
class ObiectCumparat : ISerializable
{
public int productID;
public decimal pret;
public int cantitate;
[NonSerialized] public decimal total;
protected ObiectCumparat(SerializationInfo info, StreamingContext context)
{
this.productID = info.GetInt32(“Product ID”);
this.pret = info.GetDecimal(“Pret”);
this.cantitate = info.GetInt32(“Cantitate”);
this.total = pret*cantitate;
}
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter=true)]
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue(“Product ID”,productID);
info.AddValue(“Pret”,pret);
info.AddValue(“Cantitate”,cantitate);
}
}
Se face serializarea
Serializare incepe [OnSerializing]
propriu-zisa
Serializarea s-a
[OnSerialized]
terminat
IDeserializationCall
Deserializarea s-a
[OnDeserialized] back.
terminat
OnDeserialization