Zum Hauptinhalt springen

Binäre Serialisierung

Die Klasse Person soll auf der Festplatte gespeichert und anschließend wieder eingelesen werden. Mit der Markierung [Serializable()] wird die komplette Klasse für die Serialisierung zugänglich gemacht. Da das Alter im Beispiel jedes Mal berechnet wird, muss die Variable age nicht serialisiert werden.

[Serializable()]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }

[NonSerialized()]
private int? age;

public int? Age
{
get
{
if (age != null)
{
return age;
}
age = DateTime.Today.Year - DateOfBirth.Year;
if (DateOfBirth > DateTime.Today.AddYears(-1))
age--;
return age;
}
}

public void Print()
{
Console.WriteLine($"First Name: {FirstName}");
Console.WriteLine($"Last Name: {LastName}");
Console.WriteLine($"Date of Birth: {DateOfBirth.ToShortDateString()}");
Console.WriteLine($"Age: {Age}");
}

Serialisierung

Person person = new Person { FirstName = "John", LastName = "Doe", DateOfBirth = new DateTime(1988, 01, 22) };
BinaryFormatter formatter = new BinaryFormatter();
FileStream stream = new FileStream(@"c:\tmp\person.bin", FileMode.Create);
formatter.Serialize(stream, person);
stream.Close();

Deserialisierung

Person person;
BinaryFormatter formatter = new BinaryFormatter();
FileStream stream = new FileStream(@"c:\tmp\person.bin", FileMode.Open);
person = (Person)formatter.Deserialize(stream);
stream.Close();

person.Print();

Kommentare