(接上) 19.4不完整類型 盡管在一個單一的文件中為一個類型維護所有的源代碼是一個良好的編程實踐,但有時,一個類型變得非常大,這將成為一個不切實際的限制。此外,程序員經常使用源代碼生成器產生應用程序的初始結構,并且修改結果代碼。遺憾的是,當源代碼在將來被再次發射時,現存的修改將會被覆蓋。
不完整類型(partial type)可以讓類、結構和接口被拆分成多個部分存儲在不同的源文件中,這更利于開發和維護。此外,不完整類型允許某些類型的機器生成的部分與用戶編寫的部分之間的分離,因此增加由工具產生的代碼很容易。
當在多個部分中定義一個類型時,你可以使用一個新的類型修飾符partial。下面是一個不完整類的例子,它在兩個部分中被實現。這兩個部分可以在不同的源文件中,例如,因為第一個部分是通過一個數據庫映射工具由機器生成的,第二個部分是由手工創建的。
public partial class Customer
{
private int id;
private string name;
private string address;
pivate List<Order> orders;
public Customer()
{
…
}
}
public partial class Customer
{
public void SubmitOrder(Order order)
{
orders.Add(order);
}
public bool HasOutstandingOrders()
{
return orders.Count>0;
}
}
當前面的兩個部分一起編譯時,其結果代碼和被作為一個單一的單元而編寫的類是一樣的。
public class Customer
{
private int id;
private string name;
private string address;
pivate List<Order> orders;
public Customer()
{
…
}
public void SubmitOrder(Order order)
{
orders.Add(order);
}
public bool HasOutstandingOrders()
{
return orders.Count>0;
}
}
不完整類型的所有部分必須一起編譯,這樣各個部分在編譯時就可以被融合到一起。特別需要注意的是的是,不完整類型不允許對已經被編譯的類型
|