2010-10-01 6 views
6

J'ai une classe formée de deux classes partielles.Remplacer une méthode utilisant une classe partielle

Un créé par génération de code ORM et un pour les extensions.

Dans ce cas particulier, j'ai besoin de surcharger l'une des propriétés générées par la classe partielle parce que je dois d'abord effectuer une validation sur celle-ci.

Est-il possible d'utiliser ma classe d'extension pour remplacer la propriété de la classe partielle de génération de code?

Répondre

10

Non, impossible. Si vous êtes le propriétaire de la génération de code, vous devez ajouter des hooks pour gérer ce scénario. Par exemple, SqlMetal.exe pour LinqToSql produit des classes partielles dans laquelle chaque poseur de propriété ressemble un peu à ceci:

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

Bien sûr, le générateur crée également les changement spécifiques de propriété/méthodes de changement, mais ils déclarent ceux que partials :

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

Avec cette configuration, il est évidemment assez facile d'exploiter ces événements pour la classe partielle d'extension.

Questions connexes