Можно ли оценить событие вызова заданного свойства?
Допустим, у нас есть обычный класс C# с одним свойством auto get/set.
public class Entity
{
public String SomeProperty {get;set;}
}
Есть ли какое-либо событие, которое возникает и которое я могу оценить, когда вызывается метод set SomeProperty?
Возможно ли что-то подобное, может быть, отражение?
Псевдо-код, без реального кода:
Entity e = new Entity();
e.SomeProperty.SetterCalled += OnSetterCalled;
private void OnSetterCalled(Sender propertyinfo)
{
propertyinfo pi = propertyinfo;
Console.Write (pi.Name);
}
Я знаю, я мог бы использовать CallerMember, но тогда мне пришлось изменить свойство auto.
2 ответа
Я бы порекомендовал изучить:
INotifyPropertyChanged
Вот отличное прохождение:
Реализация INotifyPropertyChanged - существует ли лучший способ?
Нет, нет способа сделать это.
Сеттер просто так:
_backingVariable = value;
Присвоение по сути не вызывает никаких методов. В существующем состоянии нет способа вызвать событие во время набора свойств с использованием авто-свойства.
Вы можете изменить код во время компиляции, используя метод, описанный в: /questions/2227796/realizatsiya-inotifypropertychanged-suschestvuet-li-luchshij-sposob/2227821#2227821
Но в противном случае нет способа сделать это.