2012-12-29 29 views
4

可能重複:
Why use partial classes?如何使用部分類?

我是新來的部分類,並想知道如果有人可以給我的,爲什麼我會用他們的大畫面和哪些優勢我將獲得在該過程。

什麼,我需要做的是,我從一個Windows窗體保存我的數據到多個表說表。 我想在其他地方重複使用代碼。

我已經做了一個DAL類,現在我該如何實現這個部分類來保存數據?

感謝我創造這樣的事情提前支持.. :)

:是不是很好用?

class clsDAL 
    { 
     public partial class SaveData 
     { 
      public void SpClient() 
      { 

      } 
     } 

     public partial class SaveData 
     { 
      public void SpCountry() 
      { 
      } 
     } 

     public partial class SaveData 
     { 
      public void SpDuration() 
      { 
      } 
     } 

     public partial class SaveData 
     { 
      public void SpProfile() 
      { 
      } 
     } 

     public partial class SaveData 
     { 
      public void SpWorkload() 
      { 
      } 
     } 
    } 
+1

你在這裏問兩個問題:爲什麼使用部分類,並且是你的'DAL'設計好。這應該是兩個單獨的問題。對於第二個問題,幾乎沒有任何信息可以回答。初看起來,它看起來像一個糟糕的設計,在單獨的部分類中具有單個函數。 – nawfal

回答

1

所有「部分」關鍵字都會將您的班級代碼散佈到多個文件中。 這對組織來說非常棒。否則,就像一個班。

你可以重新使用一個類。假設它不是靜態的,你可以將它實例化爲不同的對象。如果它是靜態的並且可訪問,那麼可以調用它的方法。

+0

你能告訴我一個例子,我如何使用它將數據保存到mysql中的多個表中? 我很困惑做同樣的事情。 – Paz

1

部分類對於在多個文件中拆分同一個類很有用,它與代碼重用無關。您所描述的問題是一個典型的CRUD操作,您需要將表單字段映射到數據存儲區(sql server,xml,文檔數據庫(無sql)等)中的字段。 DAL是一個很好的開始。只需將表單數據保存在DTO(數據傳輸對象)中,並將其傳遞到DAL以保存數據。 不要擔心部分類,它們很少有用。如果您的課程需要跨多個文件拆分並且無法控制地增長,則意味着他們的課程太多了。尊重SRP(單一責任原則),並保持狹窄的焦點。祝你好運!

5

部分類是爲了將一個(大)類拆分成兩個或多個通常用單獨文件寫入的較小類。沒必要將它們放在單獨的文件中。你可以這樣做:

public partial class SaveData 
{ 
    public void SpClient() 
    { 

    } 
} 

public partial class SaveData 
{ 
    public void SpCountry() 
    { 

    } 
} 

在同一個文件中。但這很少有意義。將它分離爲多個文件會更好。

什麼:

它可以從一個單一類成獨立的模塊分類代碼,即使他們基本上都形成同一類的一部分,有時幫助。具有SpClient.cs文件SpClient功能將幫助您更好地瞭解會做什麼樣的代碼在該文件中(以及類似的SpCountry.csSpCountry)..

這是很少需要,雖然。在WinForms的情況下,VS自動生成設計器代碼到單獨的designer.cs,Form類中。這意味着你不必在應用程序邏輯所在的最重要的類中看到大量不重要的代碼(你最不可能處理的代碼)。因此,一個Form類會是什麼樣子:

public partial class Form1 : Form 

,這將是目前在designer.cs了。

另一個可能的巧妙運用將是:

public partial class SaveData : IEquatable<SaveData> 
{ 
    //implement IEquatabale here 
} 

public partial class SaveData : IComparable<SaveData> 
{ 
    //implement IComparable here 
} 

你可以有部分類靜態類太:

static partial class Extensions //in StringExtension.cs 
{ 

} 

static partial class Extensions //in MathExtension.cs 
{ 

} 

你只需要在類的一個static關鍵字。編譯器假定此類型的每個其他部分類都是靜態的。換句話說,你可以這樣做:

static partial class Extensions //in StringExtension.cs 
{ 

} 

partial class Extensions //in MathExtension.cs 
{ 
    //which will be static 
} 

在你的情況我看不出有什麼特別的理由,以分離關注到不同的局部類。最好寫在一個班級。而你必須編寫代碼才能使事情發揮作用。