動態編譯在運行期自動生成 C# 代碼 → 呼叫 CSharpCodeProvider 編譯 → 載入組件 → 反射調用。產出的暫時組件與靜態編譯組件執行速度無差異,兼具靈活性與高效能。適用場景:功能邏輯固定但結構隨資料/配置變化(如 ORM 映射);不適用於過於簡單(靜態編譯即可)或過於複雜無法由生成器表達的邏輯。
沿用上課範例 DB_Employees,以 [BindTable("Employees")]、[BindField("EmployeeID", Key=true)] 等特性描述映射關係,屬性內部封裝私有欄位,結構清晰易維護。
[Serializable]
[BindTable("Employees")]
public class DB_Employees {
public string FullName => LastName + FirstName;
[BindField("EmployeeID", Key = true)]
public int EmployeeID { get; set; }
[BindField("LastName")]
public string LastName { get; set; }
// 其他欄位...
}