/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example15_19.cs illustrates binary serialization
*/
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
// the Customer class gives us something to serialize
[Serializable]
class Customer
{
// some private data members
private int CustomerNumber;
private string CustomerName;
private string CustomerCountry;
// the WriteCustomer method formats info to the screen
public void WriteCustomer()
{
Console.WriteLine("Customer Number: " + this.CustomerNumber);
Console.WriteLine("Customer Name: " + this.CustomerName);
Console.WriteLine("Customer Country: " + this.CustomerCountry);
}
// the constructor accepts all the info to create a customer
public Customer(
int newCustomerNumber,
string newCustomerName,
string newCustomerCountry)
{
this.CustomerNumber = newCustomerNumber;
this.CustomerName = newCustomerName;
this.CustomerCountry = newCustomerCountry;
}
}
public class Example15_19
{
public static void Main()
{
// create a new customer and dump to screen
Customer MyCustomer = new Customer(1, "X Corporation", "France");
MyCustomer.WriteCustomer();
// Create a FileStream to hold the serialized customer
FileStream serializeStream = new FileStream("c:\\MyCustomer.dat",
FileMode.Create);
// use the CLR's binary formatting support
BinaryFormatter bf = new BinaryFormatter();
// serialize the object
bf.Serialize(serializeStream, MyCustomer);
serializeStream.Flush();
serializeStream.Close();
// retrieve the serialized version to a second object and dump that
FileStream retrieveStream = new FileStream("c:\\MyCustomer.dat",
FileMode.Open);
Customer NewCustomer = (Customer) bf.Deserialize(retrieveStream);
NewCustomer.WriteCustomer();
}
}