2010-10-01 80 views
6

我有一個由兩個部分類組成的類。重寫使用部分類的方法

一個由ORM代碼生成,一個用於擴展。

在這個特定的實例中,我需要重寫部分類生成的屬性之一,因爲我需要首先對它進行驗證。

是否可以使用我的擴展類來重寫代碼生成partial class的屬性?

回答

10

不,不可能。如果您是代碼生成的所有者,則應該處理該場景。例如,對於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(); 

使用此設置,顯然很容易挖掘擴展部分類的這些事件。