让我们说,我们有一个普通的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,但后来我必须更改自动属性。
答案 0 :(得分:3)
不,没有办法做到这一点。
setter就是这样:
_backingVariable = value;
分配本身并不会调用任何方法。就目前而言,在使用自动财产的财产集期间无法提出事件。
您可以使用类似于https://stackoverflow.com/a/18002490/1783619
中描述的技术在编译时更改代码但除此之外,没有办法做到这一点。
答案 1 :(得分:1)
我建议调查一下:
INotifyPropertyChanged
这是一个很棒的演练:
Implementing INotifyPropertyChanged - does a better way exist?