В настоящее время я работаю над созданием нового проекта и задаюсь вопросом, как я могу добиться того, что у моих классов ViewModel есть поддержка INotifyPropertyChanged, не имея необходимости вручную вводить все свойства.Автоматическая реализация INotifyPropertyChanged посредством генерации кода T4?
Я просмотрел рамки AOP, но я думаю, что они просто взорвут мой проект другой зависимостью.
Так что я думал о создании реализаций свойств с помощью T4.
Настройка будет такой: у меня есть класс ViewModel, который объявляет только свои фоновые переменные Properties, а затем я использую T4 для создания из него реализации свойств.
Например, это будет мой ViewModel:
public partial class ViewModel
{
private string p_SomeProperty;
}
Тогда T4 будет идти поверх исходного файла и искать деклараций членов, названных «p_» и создать файл так:
public partial class ViewModel
{
public string SomeProperty
{
get
{
return p_SomeProperty;
}
set
{
p_SomeProperty= value;
NotifyPropertyChanged("SomeProperty");
}
}
}
Этот подход имеет некоторые преимущества, но я не уверен, действительно ли он может работать. Поэтому я хотел опубликовать свою идею здесь, в StackOverflow, в качестве вопроса, чтобы получить некоторые отзывы об этом и, возможно, некоторые советы, как это можно сделать лучше/проще/безопаснее.
Я чувствую себя придурком, но я понятия не имел, что такое Т4, пока я просто не искал его из-за этого вопроса. Не могу поверить, что об этом больше не говорят! – BFree
Я тоже. Я попал сюда из годового препроцессора C# (http://stackoverflow.com/questions/986404/does-a-c-preprocessing-tool-exist). Doh. – lo5
см. Также http://stackoverflow.com/questions/1315621/implementing-inotifypropertychanged-does-a-better-way-exist –