Можно ли оценить событие вызова заданного свойства?

Допустим, у нас есть обычный класс 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

Но в противном случае нет способа сделать это.

Другие вопросы по тегам