使用反射机制在属性值改变时触发事件

7

我正在使用C#进行工作,我有一个对象,基于一些个人原因,只能使用反射来访问该对象。因此,当我需要设置其中一个属性的值时,我会按照以下方式操作:

System.Reflection.PropertyInfo property = this.Parent.GetType().GetProperty("SomeProperty");
object someValue = new object(); // Just for example
property.SetValue(this.Parent, someValue, null);

为了获取它的值,我使用GetValue方法。

我的问题是:有没有一种使用反射触发属性更改事件的方法?


这个类实现了 INotifyPropertyChanged 接口吗?调用 SetValue 应该使用属性的 setter。 - cadrell0
@cadrell0,不好意思,恐怕它不行。 - Dante
@Dante,你找到解决方案了吗?我正在尝试在Thread.CurrentThread.CurrentCulture值更改时触发通知事件,这与你的问题类似。 - Kira
2个回答

8

使用反射有办法在属性改变时触发事件吗?

除非属性的setter本身引发事件,否则没有办法。没有任何东西“监视”所有属性的更改,并在其更改时引发事件。


谢谢您的回复,我猜我需要采用另一种方法。 - Dante

0

在WPF应用程序中,您可以使用Inotifychanged。当与属性相关的某些事件发生时,自动更改属性值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接