Csharp/C Sharp/File Stream/IDeserializationCallback

Материал из .Net Framework эксперт
Версия от 14:45, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

extends IDeserializationCallback

<source lang="csharp"> using System; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.IO;

[Serializable] public class BookRecord : IDeserializationCallback {

   public String title;
   public int asin;
   [NonSerialized]
   public int rank;
   public BookRecord(String title, int asin) {
       this.title = title;
       this.asin = asin;
       rank = GetSalesRank();
   }
   public int GetSalesRank() {
       Random r = new Random();
       return r.Next(5000);
   }
   public void OnDeserialization(Object o) {
       rank = GetSalesRank();
   }

}

public class StreamObject {

   public static void Main() {
       BookRecord book = new BookRecord("title", 123456789);
       Console.WriteLine(book.title + " " + book.asin +" " + book.rank);
       FileStream stream = new FileStream(@"book.obj", FileMode.Create);
       BinaryFormatter bf = new BinaryFormatter();
       bf.Serialize(stream, book);
       stream.Close();
       FileStream streamIn = new FileStream(@"book.obj", FileMode.Open);
       BookRecord bookIn = (BookRecord)bf.Deserialize(streamIn);
       Console.WriteLine(bookIn.title + " " + bookIn.asin + " " + bookIn.rank);
   }

}

</source>