2010-10-01 11 views
6

Mam klasę utworzoną przez dwie częściowe klasy.przesłanianie metody przy użyciu częściowej klasy

Jeden stworzony przez generowanie kodu ORM i jeden dla rozszerzeń.

W tym konkretnym przypadku potrzebuję zastąpić jedną z właściwości generowanych przez klasę częściową, ponieważ najpierw muszę wykonać na niej pewne sprawdzanie poprawności.

Czy możliwe jest użycie mojej klasy rozszerzenia w celu nadpisania właściwości klasy częściowej generowania kodu?

Odpowiedz

10

Nie, niemożliwe. Jeśli jesteś właścicielem generowania kodu, powinieneś umieścić haki do obsługi tego scenariusza. Na przykład, sqlmetal.exe dla LinqToSql produkuje częściowe klas którym każdy seter nieruchomość wygląda trochę tak:

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

Oczywiście, generator tworzy również te metody zmiana/zmiany własności specyficznych, ale oświadczam ci, jak podszablonów :

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

W tej konfiguracji łatwo jest wykorzystać te zdarzenia dla częściowej klasy rozszerzenia.