|
/* Tetyana Loskutova http://tetyana.wordpress.com */
using System;
using System.IO;
using System.Xml.Serialization;
using System.Collections;
/*
* Proxy object. Transfers a list over the network
* and stores it as an XML file.
*/
namespace RemotingXml.PersistentClasses
{
public class XmlHandler: MarshalByRefObject
{
private const string Extension = ".xml";
// list of remote objects
private IList _persistentObjects;
public IList PersistentObjects
{
get { return _persistentObjects; }
set { _persistentObjects = value; }
}
// end PersistentObject
public void StoreData()
{
// Serialize object list to xml
System.Console.WriteLine("persistentObjects " + _persistentObjects.Count);
if (_persistentObjects.Count > 0)
{
// define the object type
object persistentObject = _persistentObjects[0];
XmlSerializer serializer = new XmlSerializer(_persistentObjects.GetType());
// delete the old file and create a new one
string filename = persistentObject.GetType().Name + Extension;
File.Delete(filename);
StreamWriter xmlWriter = new StreamWriter(filename);
// serialize object list
serializer.Serialize(xmlWriter, _persistentObjects);
xmlWriter.Close();
}
}
// end StoreData
public IList RetrieveData(Type arrayType, Type objectType)
{
// Compose the file name
string filename = objectType.Name + Extension;
// deserialize
XmlSerializer serializer = new XmlSerializer(arrayType);
FileStream xmlFileStream = new FileStream(filename, FileMode.Open);
IList objects = (IList)serializer.Deserialize(xmlFileStream);
xmlFileStream.Close();
return objects;
}
// end RetrieveData
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.