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

📄 form1.cs

📁 Professional C# 2nd Edition
💻 CS
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace Wrox.ProCSharp.Xml.SerialSample3
{

	/// <summary>
	///		Summary description for Form1.
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.ListBox listBox1;
		private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Button button2;
		/// <summary>
		///		Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components=null;

		public Form1()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			//
			// TODO: Add any constructor code after InitializeComponent call
			//
		}

		/// <summary>
		///		Clean up any resources being used.
		/// </summary>
   protected override void Dispose( bool disposing )
   				{
   					if( disposing )
   					{
   						if (components != null) 
   						{
   							components.Dispose();
   						}
   					}
   					base.Dispose( disposing );
   				}
   

		#region Windows Form Designer generated code
		/// <summary>
		///		Required method for Designer support - do not modify
		///		the contents of this method with the code editor.
		/// </summary>
    private void InitializeComponent()
    {
      this.listBox1 = new System.Windows.Forms.ListBox();
      this.button1 = new System.Windows.Forms.Button();
      this.button2 = new System.Windows.Forms.Button();
      this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right);
      this.listBox1.Size = new System.Drawing.Size(336, 238);
      this.listBox1.TabIndex = 0;
      this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
      this.button1.Location = new System.Drawing.Point(64, 264);
      this.button1.TabIndex = 1;
      this.button1.Text = "Serialize";
      this.button1.Click += new System.EventHandler(this.button1_Click);
      this.button2.Location = new System.Drawing.Point(152, 264);
      this.button2.TabIndex = 2;
      this.button2.Text = "Deserialize";
      this.button2.Click += new System.EventHandler(this.button2_Click);
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(339, 320);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {this.button2,
                                                                  this.button1,
                                                                  this.listBox1});
      this.Text = "Form1";

    }
		#endregion

		/// <summary>
		/// 	The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

    //SerialSample3\form1.cs
    private void button1_Click(object sender, System.EventArgs e)
    {
      //create new book and bookproducts objects
      Product newProd=new Product();
      BookProduct newBook=new BookProduct();
      //set som eproperties
      newProd.ProductID=100;
      newProd.ProductName="Product Thing";
      newProd.SupplierID=10;
      
      newBook.ProductID=101;
      newBook.ProductName="How to Use Your New Product Thing";
      newBook.SupplierID=10;
      newBook.ISBN="123456789";
      //add the items to an array
      Product[] addProd={newProd,newBook};
      //new inventory object using the addProd array
      Inventory inv=new Inventory();
      inv.InventoryItems=addProd;
      //serialize the Inventory object
      TextWriter tr=new StreamWriter("..\\..\\..\\order.xml");
      XmlSerializer sr=new XmlSerializer(typeof(Inventory));
      
      sr.Serialize(tr,inv);
      tr.Close();
		MessageBox.Show("Serialized!");
      
    }

    private void button2_Click(object sender, System.EventArgs e)
    {
      //create Inventory object
      Inventory newInv;
      
      FileStream f=new FileStream("..\\..\\..\\order.xml",FileMode.Open);
      //deserialize the order.xml doc
      XmlSerializer newSr=new XmlSerializer(typeof(Inventory));
      newInv=(Inventory)newSr.Deserialize(f);
      //load listbox with data from deserialized object
      foreach(Product prod in newInv.InventoryItems)
        listBox1.Items.Add(prod.ProductName);
        
      f.Close();
    }
    
    
    public class Inventory
    {

      private Product[] stuff;
      //ctor
      public Inventory() {}
      //need have an attribute entry for each data type
      [XmlArrayItem("Prod",typeof(Product)),
      XmlArrayItem("Book",typeof(BookProduct))]
     
      public Product[] InventoryItems {
        get {return stuff;}
        set {stuff=value;}
      }
    
    }
    
    //product class
    public class Product {
    
      private int prodId;
      private string prodName;
      private  int suppId;
     
      public Product() {}
       
    
      public int  ProductID {
        get {return prodId;}
        set {prodId=value;}
      }
      
    
      public string ProductName {
        get {return prodName;}
        set {prodName=value;}
      }
      
    
      public int SupplierID  {
        get {return suppId;}
        set {suppId=value;}
      }
     
      
    }
    //Bookproduct class
    public class BookProduct:Product
    {
      private string isbnNum;
      
      public BookProduct() {}
      
      public string ISBN  {
        get {return isbnNum;}
        set {isbnNum=value;}
      }
    
    }
    
    
    
	}
}

⌨️ 快捷键说明

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