分部方法的語法
在看C#語言的What
又仔細看了一下MSDN Library for Visual Studio
分部方法的定義和分部類型類似
partial class CA
{
// ……
private void partial M()
而實現聲明看上去和普通方法類似
private void partial M() // 實現聲明
{
// 方法體
}
在調用分部方法時
CA a = new CA()
a
只是
使用分部方法的注意事項
分部方法的語法非常簡單
如果沒有寫實現聲明
class CA
{
partial void M(int i);
static void Main()
{
CA a = new CA();
int i =
a
}
}
分部方法M只有定義聲明
分部方法只能出現在分部類中
分部方法必須是私有(private)的
分部方法可以帶有參數
分部方法不可以是虛擬(virtual)的
分部方法不可以是外部(extern)的
分部方法可以是靜態(static)的
分部方法可以是泛型方法
不能將分部方法封裝到一個委托中
分部方法的應用場景
分部方法和分部類型的初衷是類似的
由此
場景
有的時候
partial class Customer
{
string name;
public string Name
{
get
{
return name;
}
set
{
OnBeforeUpdateName();
OnUpdateName();
name = value;
OnAfterUpdateName();
}
}
partial void OnBeforeUpdateName();
partial void OnAfterUpdateName();
partial void OnUpdateName();
}
這裡定義了三個分部方法
場景
當使用Linq to SQL向項目中加入了實體類之後
下面我們來看一下這個自動生成的類定義
[System
public partial class AdventureWorksDataContext : System
{
private static System
= new AttributeMappingSource();
#region Extensibility Method Definitions
partial void OnCreated();
partial void InsertAWBuildVersion(AWBuildVersion instance);
partial void UpdateAWBuildVersion(AWBuildVersion instance);
partial void DeleteAWBuildVersion(AWBuildVersion instance);
這裡我們可以看到一系列的partial方法
場景
這是Anders Liu臆想的場景
partial class CA
{
partial void DebugPrint(string msg);
void F()
{
DebugPrint(
}
}
partial class CA
{
#if DEBUG
partial void DebugPrint(string msg);
{
Debug
}
#endif
}
這樣做的好處在於
缺點在於
小結
嗯
From:http://tw.wingwit.com/Article/program/net/201311/13680.html