Head First C# Code: Chapter 10
Excuse Manager
Excuse.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace _0_Excuse_Manager
{
[Serializable]
public class Excuse
{
public string Description;
public string Results;
public DateTime LastUsed;
public string ExcusePath;
public Excuse()
{
ExcusePath = "";
}
public Excuse(string excusePath)
{
OpenFile(ExcusePath);
}
public Excuse(Random random, string folder)
{
string[] fileNames = Directory.GetFiles(folder, "*.excuse");
OpenFile(fileNames[random.Next(fileNames.Length)]);
}
private void OpenFile(string excusePath)
{
this.ExcusePath = excusePath;
BinaryFormatter formatter = new BinaryFormatter();
Excuse tempExcuse;
using (Stream input = File.OpenRead(excusePath))
{
tempExcuse = (Excuse)formatter.Deserialize(input);
}
Description = tempExcuse.Description;
Results = tempExcuse.Results;
LastUsed = tempExcuse.LastUsed;
}
public void Save(string fileName)
{
BinaryFormatter formatter = new BinaryFormatter();
using (Stream output = File.OpenWrite(fileName))
{
formatter.Serialize(output, this);
}
}
}
}







