PropertyInfo.AddValueChanged等效字段?

时间:2009-06-12 17:43:26

标签: c# field reflection.emit

我正在尝试为FieldInfo找到PropertyInfo.AddValueChanged的等价物。我基本上只需要在字段值发生变化时接收事件。我假设没有这样的东西,我将不得不操纵IL代码或类似的东西。我愿意走那条路,但有关我应该如何去做的任何建议?是否有一个我不知道的字段的AddValueChanged等价物,所以我不必走那条路?

感谢。

4 个答案:

答案 0 :(得分:1)

为什么不将字段包装在属性中,并在更改时实现事件(即:使您的类INotifyPropertyChanged或您自己的等效)?

这是关于属性的美妙事物 - 它们允许您以这种方式定义行为。字段没有任何平等,操纵IL不会改变这一点。只要它是一个字段,它就不会通知。

答案 1 :(得分:0)

让我确认一下,没有像你追求的那样内置。属性可以很容易地实现,因为setter是一个方法,而字段按设计没有setter方法,它们的值只是被修改,可以从代码中的任何地方发生。为了做你想做的事,我想你可以看看PostSharp。

答案 2 :(得分:0)

如其他答案所示,由于您提供的信息有限,我建议您通过该字段的访问者进行任何值分配。如果它需要在任何类之外,您可以创建一个单独的类(或struc)(并将您的字段更改放在一个访问器中。)如果您不需要该字段的多个实例,则可以将其声明为静态且仅访问它通过它的访问者。

答案 3 :(得分:0)

您是否公开了您要监控的公共字段?看起来你应该将它们包装在属性中并以这种方式公开它们。然后你可以使用你已经拥有的监控代码。