Обертка над INotifyPropertyChanged - C#
Формулировка задачи:
Я пытаюсь написать (если это возможно) обертку над INotifyPropertyChanged. Просто во первых при его реализации в классах приходится писать как минимум две лишние строки (событие и функцию инвокер), а во вторых зачастую свойства (во всяком случае у меня) автореализуемые и влом писать для каждого свойства приватное поле и геттер с сеттером только ради INotifyPropertyChanged. Я не уверен получится ли, но пытаюсь написать такую логику. Во первых класс заместо интерфейса. Таким образом не придется реализовывать лишние строки в производном классе. Во вторых атрибут для свойств который будет помечать что им нужно встроить инвок в сеттер и добавить приватное поле. Вот тут основная сложность. Можно ли как то атрибутом добавить классу поле??? Т.е. как то через рефлексию получить имя свойства над которым атрибут установлен был и добавить в класс поле с таким же именем (ну плюс там знак подчеркивания например '_') и как то добавить этому свойству в геттер и сеттер получение и установку поля и вызов события. Вот что я начал, какие будут мысли? Это вообще реально сделать?
public class NotifyPropertyChanged : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(string pname) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pname)); } [AttributeUsage(AttributeTargets.Property)] public class NPChangedAttribute : Attribute { public NPChangedAttribute() { var t = GetType(); // Тут что то... } }
Решение задачи: «Обертка над INotifyPropertyChanged»
textual
Листинг программы
this.SomePropertyChanged.Raise(() => this.Now); this.SomePropertyChanged.Raise(() => this.Age, () => this.Weight);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д