In questo piccolo tutorial vediamo come serializzare un oggetto con SOAP, ricordiamoci come prima cosa di referenziare l'assembly System.Runtime.Serialization.Formatters.Soap.dll e creare una classe con l'attributo [Serializable].
Questa è la nostra classe di esempio:
[Serializable]
class Note
{
private string _title;
public string Title
{
get { return _title; }
set { _title = value; }
}
private string _body;
public string Body
{
get { return _body; }
set { _body = value; }
}
private int _version;
public int Version
{
get { return _version; }
set { _version = value; }
}
}
Ed ora vediamo il codice che permette di serializzare la classe su stream (FileStream nel caso del nostro esempio)
Note note = new Note();
private const string FILENAME = "noteserialized.xml";
private void Deserialize()
{
if (File.Exists(FILENAME) == true)
{
System.Runtime.Serialization.Formatters.Soap.SoapFormatter sf = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter();
using (Stream strm = File.Open(FILENAME, FileMode.Open))
{
if (strm.Length > 0)
{
try
{
note = (Note)sf.Deserialize(strm);
}
catch (System.Xml.XmlException ex)
{
// NOSTRO CODICE DI ERRORE
}
}
}
}
}
private void Serialize()
{
System.Runtime.Serialization.Formatters.Soap.SoapFormatter sf = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter();
using (Stream strm = File.Open(FILENAME, FileMode.Create, FileAccess.Write))
{
sf.Serialize(strm, note);
}
}