Tôi hiện đang làm việc để thiết lập một dự án mới của tôi và tự hỏi làm thế nào tôi có thể đạt được rằng các lớp ViewModel của tôi có hỗ trợ INotifyPropertyChanged trong khi không phải tự tay mã hóa tất cả các thuộc tính.Thực thi INotifyPropertyChanged tự động thông qua việc tạo mã T4?
Tôi đã xem xét các khung công tác AOP nhưng tôi nghĩ rằng chúng sẽ làm nổ tung dự án của tôi với một sự phụ thuộc khác.
Vì vậy, tôi đã nghĩ đến việc tạo các cài đặt thuộc tính với T4.
Thiết lập sẽ là điều này: Tôi có một lớp ViewModel chỉ khai báo biến nền thuộc tính của nó và sau đó tôi sử dụng T4 để tạo ra các triển khai thuộc tính từ nó.
Ví dụ này sẽ là ViewModel của tôi:
public partial class ViewModel
{
private string p_SomeProperty;
}
Sau đó, T4 sẽ đi qua các tập tin nguồn và tìm kiếm khai báo thành viên mang tên "p_" và tạo ra một tập tin như thế này:
public partial class ViewModel
{
public string SomeProperty
{
get
{
return p_SomeProperty;
}
set
{
p_SomeProperty= value;
NotifyPropertyChanged("SomeProperty");
}
}
}
Cách tiếp cận này có một số ưu điểm nhưng tôi không chắc liệu nó có thực sự hoạt động hay không. Vì vậy, tôi muốn đăng ý tưởng của tôi ở đây trên StackOverflow như một câu hỏi để có được một số phản hồi về nó và có thể một số lời khuyên làm thế nào nó có thể được thực hiện tốt hơn/dễ dàng hơn/an toàn hơn.
Tôi cảm thấy như một moron, nhưng tôi không biết T4 là gì cho đến khi tôi googled nó vì câu hỏi này. Tôi không thể tin rằng điều này không được nói nhiều hơn nữa! – BFree
Tôi cũng thế. Tôi đã ở đây từ chủ đề tiền xử lý C# tuổi (http://stackoverflow.com/questions/986404/does-a-c-preprocessing-tool-exist). Doh. – lo5
xem thêm http://stackoverflow.com/questions/1315621/implementing-inotifypropertychanged-does-a-better-way-exist –