| using System;
using System.Runtime.Serialization;
[Serializable]
public class Person{
private string name;
[NonSerialized()]
private int age;
private Date dateOfBirth, dateOfDeath;
public Person (string name, Date dateOfBirth){
this.name = name;
this.dateOfBirth = dateOfBirth;
this.dateOfDeath = null;
age = Date.Today.YearDiff(dateOfBirth);
}
[OnDeserialized()]
internal void FixPersonAfterDeserializing(
StreamingContext context){
age = Date.Today.YearDiff(dateOfBirth);
}
public Date GetDateOfBirth(){
return new Date(dateOfBirth);
}
public int Age{
get {return Alive ? age : dateOfDeath.YearDiff(dateOfBirth);}
}
public bool Alive{
get {return dateOfDeath == null;}
}
public void Died(Date d){
dateOfDeath = d;
}
public void Update(){
age = Date.Today.YearDiff(dateOfBirth);
}
public override string ToString(){
return "Person: " + name +
" *" + dateOfBirth +
(Alive ? "" : " +" + dateOfDeath) +
" Age: " + age;
}
} |