|
C# Read and Write Anything
Listing 3. You can leverage generics to provide a utility class that's much more useful. These two generic methods work together to provide read/write capability to any class using the XML Serializer. {
public static T CreateFromFile<T>(string pathName)
where T : new()
{
T rVal = new T();
if (!File.Exists(pathName))
return rVal;
FileStream fsStorage = null;
XmlReader reader = null;
try {
fsStorage = new FileStream(pathName,
FileMode.Open);
reader = new XmlTextReader(fsStorage);
XmlSerializer serializer =
new XmlSerializer(typeof(T));
rVal = (T)serializer.Deserialize(reader);
} catch (System.InvalidOperationException) {
// The file was not a valid XML file.
// Return a default object.
} finally {
if (reader != null)
reader.Close();
if (fsStorage != null)
fsStorage.Close();
}
return rVal;
}
public static void SaveToFile<T>(T value,
string pathName)
{
using (TextWriter writer = new
StreamWriter(pathName))
{
XmlSerializer serializer =
new XmlSerializer(typeof(T));
serializer.Serialize(writer, value);
}
}
}
|