是否可以评估调用set属性的事件?

时间:2014-12-04 23:20:13

标签: c# propertyinfo propertychanged callermembername

让我们说,我们有一个普通的C#类,它有一个自动获取/设置属性。

public class Entity
{
       public String SomeProperty {get;set;}

}

当调用SomeProperty的set方法时,是否有任何事件被提出并且我可以评估?

这样的事情有可能以任何方式,也许是反思?:

伪代码,无真实代码:

Entity e = new Entity();
e.SomeProperty.SetterCalled += OnSetterCalled;

private void OnSetterCalled(Sender propertyinfo)
{
    propertyinfo pi = propertyinfo;
    Console.Write (pi.Name);
}

我知道,我可以使用CallerMember,但后来我必须更改自动属性。

2 个答案:

答案 0 :(得分:3)

不,没有办法做到这一点。

setter就是这样:

_backingVariable = value;

分配本身并不会调用任何方法。就目前而言,在使用自动财产的财产集期间无法提出事件。

您可以使用类似于https://stackoverflow.com/a/18002490/1783619

中描述的技术在编译时更改代码

但除此之外,没有办法做到这一点。

答案 1 :(得分:1)

我建议调查一下:

INotifyPropertyChanged

这是一个很棒的演练:

Implementing INotifyPropertyChanged - does a better way exist?