【发布时间】:2014-12-04 23:20:13
【问题描述】:
假设我们有一个普通的 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,但是我不得不更改 auto 属性。
【问题讨论】:
-
您可以添加实际的 getter/setter 方法。每次访问属性时都会调用它们 - 这正是它们的设计目的。
-
我能想到几个非常糟糕、难以实施的方法。但说实在的呢?不。几乎可以保证 setter 被优化为对字段的简单写入,即使没有,也没有内置机制可以让您捕获方法调用。如果您需要通知,请通过此类事件的许多常用技术之一来实现它。
-
@Ken White:您能否提供一个提示或 URL,我可以在其中找到相关信息?是否可以使用自动实现的 get/set 属性?
标签: c# propertyinfo propertychanged callermembername