⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex-21-16

📁 Programming Csharp Source Code(代码) Programming Csharp Source Code
💻
字号:
// Example 21-16: Working with a nonserialized object

namespace Programming_CSharp
{
   using System;
   using System.IO;
   using System.Runtime.Serialization;
   using System.Runtime.Serialization.Formatters.Binary;

   [Serializable]
   class SumOf : IDeserializationCallback
   {

      public static void Main()
      {
         Console.WriteLine("Creating first one with new...");
         SumOf app = new SumOf(1,5);

         Console.WriteLine("Creating second one with deserialize...");
         SumOf newInstance = SumOf.DeSerialize();
         newInstance.DisplaySums();
      }

      public SumOf(int start, int end)
      {
         startNumber = start;
         endNumber = end;
         ComputeSums();
         DisplaySums();
         Serialize();
      }

      private void ComputeSums()
      {
         int count = endNumber - startNumber + 1;
         theSums = new int[count];
         theSums[0] = startNumber;
         for (int i=1,j=startNumber + 1;i<count;i++,j++)
         {
            theSums[i] =  j + theSums[i-1];
                
         }
      }

      private void DisplaySums()
      {
         foreach(int i in theSums)
         {
            Console.WriteLine("{0}, ",i);
         }
      }

      private void Serialize()
      {
         Console.Write("Serializing...");
         // create a file stream to write the file
         FileStream fileStream = 
            new FileStream("DoSum.out",FileMode.Create);
         // use the CLR binary formatter
         BinaryFormatter binaryFormatter = 
            new BinaryFormatter();
         // serialize to disk
         binaryFormatter.Serialize(fileStream,this);
         Console.WriteLine("...completed");
         fileStream.Close();
      }

      public static SumOf DeSerialize()
      {
         FileStream fileStream = 
            new FileStream("DoSum.out",FileMode.Open);
         BinaryFormatter binaryFormatter = 
            new BinaryFormatter();
         return (SumOf) binaryFormatter.Deserialize(fileStream);
         fileStream.Close();
           
      }

      // fix up the nonserialized data
      public virtual void OnDeserialization
         (Object sender)
      {
         ComputeSums();
      }

      private int startNumber = 1;
      private int endNumber;
      [NonSerialized] private int[] theSums;
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -