Partial Class

  • 493
  • 0

Partial Class

Partial Class 若有繼承基底類別,且建構子有傳參數,要怎麼寫才好呢?

這個問題之前有想過,但一直到最近要用到才找一下怎麼解決...

很幸運的,我找到這篇討論:

http://social.msdn.microsoft.com/Forums/zh-TW/829b7620-5066-4ed1-a95e-1ac415b610ec/partial-class-and-inheritance-of-base-class?forum=csharplanguage

裡面有段特別標示出來的說明:

Peter Ritchie wrote:

partial classes are just source code for a single class spread across multiple files.  It's syntactic sugar.  The compiler takes all the content from those files, merges into a single blob of text and compiles it like that, as if you had it all in one file.

Therefore, you can't have more than one base class in your partial class declarations.

大意是說Complier 編譯時,會先把個別的Partial Class組合成一個檔案,然後編譯之。

看懂這句話後,大概就知道怎麼做了。

 

Snap1

 

BaseClass1.cs 是基底類別

   1: public class BaseClass1
   2: {
   3:     public BaseClass1(string connectionStringName)
   4:     {
   5:         //Create Connection...
   6:     }
   7: }

 

PartialClass1.base.cs 是Partial共用的程式碼,繼承、建構子、共用屬性...都寫在這支檔案。

   1: public partial class PartialClass1:BaseClass1
   2: {
   3:     //建構子
   4:     public PartialClass1(string connectionStringName) : base(connectionStringName){}
   5:  
   6:     //共用屬性
   7:     public int UserCounter { get; set; } 
   8: }

其餘的檔案,就自己的程式碼看要怎麼切...,重要的是:Partial Class共用的繼承、建構子、屬性不要再重覆寫。

PartialClass1.FunA.cs

   1: public partial class PartialClass1
   2: {
   3:     public string DoSomethingA()
   4:     {
   5:         UserCounter += 1;
   6:         return "ABC";
   7:     }
   8: }