ASP.NET中Partial Class部分類

來源:互聯網
上載者:User
如果您在開發項目的公用函數庫,用於公用函數庫的內容越豐富越好,但這不可能一下子就寫好,需要一點一點的積累,這時就可以使用Partial Class,每隔一段時間將你新開發的Partial Class類的程式上傳到伺服器上或特定的目錄下;而不需要將新的代碼複製粘貼到原先的程式碼中,減少不必要的麻煩。

Partial類型是一個純語言層的編譯處理,不影響任何執行機制——事實上C#編譯器在編譯的時候仍會將各個部分的局部類型合并成一個完整的類。


一、什麼情況下使用部分類別?

(1) 類型特別大,不宜放在一個檔案中實現。
(2) 一個類型中的一部分代碼為自動化工具產生的程式碼,不宜與我們自己編寫的代碼混合在一起。
(3) 需要多人合作編寫一個類。


二、Partial類型上的修飾符

(1) 一個類型的各個部分上的存取修飾詞必須維持一致性。
(2) 如果一個類型有一個部分使用了abstract修飾符,那麼整個類都將被視為抽象類別。
(3) 如果一個類型有一個部分使用了 sealed 修飾符,那麼整個類都將被視為密封類。
(4) 一個類的各個部分不能使用相互矛盾的修飾符,比如不能在一個部分上使用abstract,又在另一個部分上使用sealed。


三、Partial類型的基類和介面

(1) 一個類型的各個部分上指定的基類必須一致。某個部分可以不指定基類,但如果指定,則必須相同。
(2) Partial類型上的介面具有“累加”效應。
partial class Class2: Iinterface1, Iinterface2 {}
partial class Class2: Iinterface3 {}
partial class Class2: Iinterface2 {}
相當於
class Class2: Iinterface1, Iinterface2, Iinterface3 {}


四、局部類型的應用特性

在局部類型上的特性具有“累加”效應。


[Attribute1, Attribute2("Hello")]
partial class Class1{}

[Attribute3, Attribute2("Exit")]
partial class Class1{}

相當於
[Attribute1, Attribute2("Hello"), Attribute3, Attribute2("Exit")]
class Class1 {}

註:Attribute2屬性允許在類上多次使用。


五、局部類型的限制

1、要作為同一類型的各個部分的所有部份型別定義都必須使用partial 進行修飾。如下所示:

public partial class A { }

public class A { } // Error, must also be marked partial

2、partial 修飾符只能出現在緊靠關鍵字class、struct 或interface前面的位置(枚舉或其它類型都不能使用partial);

3、要成為同一類型的各個部分的所有部份型別定義都必須在同一程式集和同一模組(.exe 或.DLL 檔案)中進行定義。分部定義不能跨越多個模組;

4、類名和泛型型別參數在所有的部份型別定義中都必須匹配。泛型型別可以是分部的。每個分部聲明都必須以相同的順序使用相同的參數名。

5、局部類型只適用於類、介面、結構,不支援委託和枚舉。

6、一個類型的各個部分必須被同時編譯。


六、使用Partial需要注意以下一些情況

1.使用partial 關鍵字表明可在命名空間內定義該類、結構或介面的其他部分

2.所有部分都必須使用partial 關鍵字

3.各個部分必須具有相同的可訪問性,如public、private 等

4.如果將任意部分聲明為抽象的,則整個類型都被視為抽象的

5.如果將任意部分聲明為密封的,則整個類型都被視為密封的

6.如果任意部分聲明繼承基類時,則整個類型都將繼承該類

7.各個部分可以指定不同的基底介面,最終類型將實現所有分部聲明所列出的全部介面

8.在某一分部定義中聲明的任何類、結構或介面成員可供所有其他部分使用

9.巢狀型別可以是分部的,即使它們所嵌套於的類型本身並不是分部的也如此。


七、Partial執行個體

將Example類定義為Partial Class,將該類的三個方法m1、m2、m3分別定義在Example1。cs、Example2。cs、Example3。cs三個類檔案中,然後在PartialClass.aspx。cs中執行個體化Example類,並調用類中的方法。

//Example1.cspublic partial class Example{    public string m1()    {        return "Method 1 ";    }} //Example2.cspublic partial class Example{    public string m2()    {        return "Method 2 ";    }} //Example3.cspublic partial class Example{    public string m3()    {        return "Method 3 ";    }}
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.