如何访问 PropertyChanged 事件的订阅者?

eln*_*gno 2 .net c# events visual-studio visual-studio-2013

在 Visual Studio 2013 中调试时,我想知道PropertyChanged实现Publisher.INotifyPropertyChanged

我研究了一下,发现这应该可以调用GetInvocationList()和计算返回数组中的元素。因此,我在代码中设置了一个断点,并尝试在“立即”窗口中的一个名为publisherof 类的对象上调用此断点:Publisher

publisher.PropertyChanged.GetInvocationList()
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误消息:

The event 'System.ComponentModel.INotifyPropertyChanged.PropertyChanged' can only appear on the left hand side of += or -=
Run Code Online (Sandbox Code Playgroud)

我所做的有什么问题吗?我怎样才能访问订阅者PropertyChanged

Jon*_*eet 5

我怎样才能访问订阅者PropertyChanged

基本上你不知道。事件支持订阅和取消订阅功能。

我进行了一些研究,发现这应该可以调用 GetInitationList() 并计算返回数组中的元素。

这假设您可以获取底层委托字段 - 如果有的。可能不会——一个事件可以有很多种实现方式,就像一个属性可以有很多种实现方式一样。

基本上,您所要求的内容打破了事件的封装模型。虽然在某些情况下可以使用反射来解决这个问题,但您应该意识到您正在与系统的设计作斗争。

请参阅我关于事件和代表的文章,了解有关两者之间差异的更多信息。