2010-10-01 12 views
6

Ho una classe formata da due classi parziali.esegue l'override di un metodo utilizzando una classe parziale

Uno creato dalla generazione del codice ORM e uno per le estensioni.

In questa particolare istanza, ho bisogno di sovrascrivere una delle proprietà generate dalla classe parziale perché devo prima eseguire alcune convalide.

È possibile utilizzare la mia classe di estensione per sovrascrivere la proprietà della classe parziale di generazione del codice?

risposta

10

No, non possibile. Se sei il proprietario della generazione del codice, dovresti mettere i ganci per gestire questo scenario. Ad esempio, per SqlMetal.exe LinqToSql produce classi parziali in cui ciascun setter proprietà sembra un po 'come questo:

if (this.myProperty != value) 
{ 
    this.OnMyPropertyChanging(value); 
    this.SendPropertyChanging(); 
    this.myProperty = value; 
    this.SendPropertyChanged("MyProperty"); 
    this.OnMyPropertyChanged(); 
} 

Naturalmente, il generatore crea anche quei metodi che cambia/change specifico di proprietà, ma dichiarano quelli come parziali :

partial void OnMyPropertyChanging(string newValue); 
partial void OnMyPropertyChanged(); 

Con questa configurazione, è ovviamente abbastanza facile attingere a questi eventi per la classe parziale dell'estensione.

Problemi correlati