自動產生的程式碼需通知使用者,但不想承擔事件/虛擬方法的開銷。例如:
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();
}
使用者可在另一個 partial 檔案實作這些方法,若不實作則零成本。
AdventureWorksDataContext 產生的 partial 類別包含:
partial void OnCreated();
partial void InsertAWBuildVersion(AWBuildVersion instance);
partial void UpdateAWBuildVersion(AWBuildVersion instance);
partial void DeleteAWBuildVersion(AWBuildVersion instance);
實作 DeleteXxx 可實現軟刪除(設 IsDeleted 旗標)等自訂邏輯。
partial class CA
{
partial void DebugPrint(string msg);
void F() { DebugPrint("aaa"); }
}
partial class CA
{
#if DEBUG
partial void DebugPrint(string msg) { Debug.WriteLine(msg); }
#endif
}
優點:除錯碼集中管理;缺點:每個類別需重複定義。