Обертка над INotifyPropertyChanged - C#

Узнай цену своей работы

Формулировка задачи:

Я пытаюсь написать (если это возможно) обертку над INotifyPropertyChanged. Просто во первых при его реализации в классах приходится писать как минимум две лишние строки (событие и функцию инвокер), а во вторых зачастую свойства (во всяком случае у меня) автореализуемые и влом писать для каждого свойства приватное поле и геттер с сеттером только ради INotifyPropertyChanged. Я не уверен получится ли, но пытаюсь написать такую логику. Во первых класс заместо интерфейса. Таким образом не придется реализовывать лишние строки в производном классе. Во вторых атрибут для свойств который будет помечать что им нужно встроить инвок в сеттер и добавить приватное поле. Вот тут основная сложность. Можно ли как то атрибутом добавить классу поле??? Т.е. как то через рефлексию получить имя свойства над которым атрибут установлен был и добавить в класс поле с таким же именем (ну плюс там знак подчеркивания например '_') и как то добавить этому свойству в геттер и сеттер получение и установку поля и вызов события. Вот что я начал, какие будут мысли? Это вообще реально сделать?
Листинг программы
  1. public class NotifyPropertyChanged : INotifyPropertyChanged
  2. {
  3. public event PropertyChangedEventHandler PropertyChanged;
  4. public void OnPropertyChanged(string pname) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pname));
  5. }
  6. [AttributeUsage(AttributeTargets.Property)]
  7. public class NPChangedAttribute : Attribute
  8. {
  9. public NPChangedAttribute()
  10. {
  11. var t = GetType();
  12. // Тут что то...
  13. }
  14. }

Решение задачи: «Обертка над INotifyPropertyChanged»

textual
Листинг программы
  1. this.SomePropertyChanged.Raise(() => this.Now);
  2. this.SomePropertyChanged.Raise(() => this.Age, () => this.Weight);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут