В настоящее время я работаю над настройкой моего нового проекта и задаюсь вопросом, как я могу добиться того, что у моих классов ViewModel есть поддержка INotifyPropertyChanged, не имея необходимости вручную вводить все свойства.
Я просмотрел рамки 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, в качестве вопроса, чтобы получить некоторые отзывы об этом и, возможно, некоторые советы, как это можно сделать лучше/проще/безопаснее.