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