Я бы порекомендовал сериализацию и десериализацию xml.
Если у меня есть класс Person, определенный с помощью:
public class Person
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
сохранение / загрузка из XML так же просто, как:
Person donald = new Person{
ID=1,
FirstName="Donald",
LastName="Duck",
DateOfBirth=new DateTime(1950,1,1)};
//create a xml serializer with the required type
XmlSerializer xs=new XmlSerializer(typeof(Person));
//open a stream to the file, and save the instance
TextWriter tw = new StreamWriter(@"C:\donald.xml");
xs.Serialize(tw, donald);
tw.Close();
//open a reader stream to the file, and just load the instance.
TextReader tr = new StreamReader(@"C:\donald.xml");
Person donald2 = (Person) xs.Deserialize(tr);
tr.Close();
Предупреждение: при этом сохраняются только открытые свойства / поля класса в виде XML-элементов. Если вы хотите осуществлять дополнительный контроль над сгенерированным XML, взгляните на атрибуты в пространстве имен System.Xml.Serialization (XmlAttributeAttribute - мой личный фаворит),