2010-10-01 58 views
6

Tôi có một lớp được hình thành bởi hai lớp học một phần.ghi đè một phương thức sử dụng một lớp học

Một được tạo bằng cách tạo mã ORM và một cho tiện ích mở rộng.

Trong trường hợp cụ thể này, tôi cần ghi đè lên một trong các thuộc tính được tạo ra bởi lớp từng phần vì trước tiên tôi cần thực hiện xác thực trên đó.

Có thể sử dụng lớp tiện ích mở rộng của tôi để ghi đè thuộc tính của lớp một phần tạo mã không?

Trả lời

10

Không, không thể. Nếu bạn là chủ sở hữu của thế hệ mã, bạn nên đặt vào móc để xử lý kịch bản đó. Ví dụ, sqlmetal.exe cho LinqToSql tạo ra các lớp học phần trong đó mỗi setter tài sản trông hơi như thế này:

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

Tất nhiên, các máy phát điện cũng tạo ra những phương pháp thay đổi/thay đổi tài sản cụ thể, nhưng họ tuyên bố những người như partials :

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

Với thiết lập này, rõ ràng là rất dễ dàng chạm vào những sự kiện này cho lớp học mở rộng một phần.

Các vấn đề liên quan