2010-10-01 4 views
6

У меня есть класс, образованный двумя частичными классами.переопределить метод с использованием частичного класса

Один созданный генерацией кода ORM и один для расширений.

В данном конкретном случае мне нужно переопределить одно из свойств, сгенерированных частичным классом, потому что сначала нужно выполнить некоторую проверку.

Можно ли использовать мой класс расширения для переопределения свойства частичного класса генерации кода?

ответ

10

Нет, невозможно. Если вы являетесь владельцем генерации кода, вы должны поместить крючки для обработки этого сценария. Например, SqlMetal.exe для LinqToSql производит частичные классы, где каждое свойство сеттер выглядит немного как это:

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(); 

С этой установкой, очевидно, довольно легко использовать эти события для частичного класса расширения.