6
我有一個由兩個部分類組成的類。重寫使用部分類的方法
一個由ORM代碼生成,一個用於擴展。
在這個特定的實例中,我需要重寫部分類生成的屬性之一,因爲我需要首先對它進行驗證。
是否可以使用我的擴展類來重寫代碼生成partial class的屬性?
我有一個由兩個部分類組成的類。重寫使用部分類的方法
一個由ORM代碼生成,一個用於擴展。
在這個特定的實例中,我需要重寫部分類生成的屬性之一,因爲我需要首先對它進行驗證。
是否可以使用我的擴展類來重寫代碼生成partial class的屬性?
不,不可能。如果您是代碼生成的所有者,則應該處理該場景。例如,對於sqlmetal.exe產生LinqToSql部分類,其中每個屬性setter看起來有點像這樣:
if (this.myProperty != value)
{
this.OnMyPropertyChanging(value);
this.SendPropertyChanging();
this.myProperty = value;
this.SendPropertyChanged("MyProperty");
this.OnMyPropertyChanged();
}
當然,發電機還創建那些屬性特定的改變/變化的方法,但他們聲明的那些分音:
partial void OnMyPropertyChanging(string newValue);
partial void OnMyPropertyChanged();
使用此設置,顯然很容易挖掘擴展部分類的這些事件。