ASP.NET可互動式位元影像表單設計(6)

來源:互聯網
上載者:User
asp.net|互動|設計 使我們的對象可序列化
    為在 ASP.NET 中使用可繪製對象類,我們需要對其再進行一項更改。這些類需要是可序列化的,以便能夠在主要的 Web 頁和產生該映像的 Web 頁之間傳遞資料(後面將詳述)。序列化是這樣的過程:將某個類的資料以某種方式寫入儲存介質,以便儲存和/或傳遞資料並在以後還原序列化。還原序列化是從序列化資料中重新建立對象的過程。我們會在將來的專欄中深入討論這個問題。
  
    Dr. GUI 最開始作為 Windows 表單應用程式編寫此應用程式時,只使用了 .NET Framework 和作業系統預先分配的 Brushes 和 Pens 類中的可用常用畫筆和筆。因為這些已經分配完畢,保持對它們的引用不會有任何妨礙,同時也無需對其進行 Dispose。
  
    但由於筆和畫筆是非常複雜的對象,不能是可序列化的,因此 Dr. GUI 必須改變其策略,轉而決定儲存筆和畫筆的顏色,然後在需要繪製和填充對象時動態建立筆和畫筆。
  
    如何使之可序列化?
    序列化是 .NET Framework 的一個重要部分,因此也使序列化對象的工作變得很簡單。
  
    我們只需使用 Serializable 屬性標記一個類便可使之可序列化。(這與我們以前用於在枚舉上將其標記為一套標誌的屬性是同一種屬性。)在 C# 和 Visual Basic .NET 中的文法如下所示:
  
  
  C#
  
  [Serializable]
  class Foo // ...
  Visual Basic
  
  .NET _
  Class Foo ' ...
  
  
    注意:除了將類標記為可序列化外,還必須使類中包含的所有資料可序列化,否則在試圖序列化資料時,序列化架構會引發一個異常。
  
    使容器可序列化
    .NET Framework 的一大優點是可以使容器類可序列化。這意味著如果將Object Storage Service在可序列化的容器中,容器可以自動序列化對象。
  
    因此在本例中,DShapeList 類包含了兩個 ArrayList 對象。由於 ArrayList 是可序列化的,因此要使 DShapeList 可序列化,只需將其標記為 Serializable 屬性即可,如下所示:
  
  
  Visual Basic
  
  .NET _
  Public Class DShapeList
  Dim wholeList As New ArrayList()
  Dim filledList As New ArrayList()
  ' ...
  
  
  C#
  
  [Serializable]
  public class DShapeList {
  ArrayList wholeList = new ArrayList();
  ArrayList filledList = new ArrayList();
  
  
    假設我們放在 DShapeList 中的對象都是可序列化的,這時便可以使用單個語句序列化和還原序列化整個列表!
  
    順便說一下,這對於該應用程式的 Windows 表單版本也是一個很好的改變,因為它使我們能夠將繪圖寫入磁碟檔案並重新載入。
  
    可繪製對象的三個版本;任何一個都可以在任何上下文中使用
    您可能已經注意到,我們有三種版本的可繪製對象代碼:在 C# 和 Visual Basic .NET 中各有一個不使用我們在上面編寫的 helper 方法的版本,另一個是 Visual Basic .NET 中使用 helper 方法的版本。
  
    在這裡還有一點微小的差別:使用 helper 的檔案中的資料類被標記為可序列化;其他檔案中的資料類則沒有標記為可序列化。
  
    但是,請注意下面很重要的一點:如果我們返回去並將所有檔案中的資料類標記為可序列化,那麼將能夠在任何應用程式中使用任何類。我們將能夠混合使用 C# 和 Visual Basic .NET。並且能夠在 ASP.NET 應用程式中使用最初為 Windows 表單應用程式編寫的代碼。
  
    這種簡便的代碼重用意味著您編寫的代碼更具價值,因為代碼可以在很多不同的環境中重複使用。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.