我只想确定我理解这一点......
.net中的"事件"只是代表的集合 - 当某个类想要获取'事件'时,它使用'+'运算符和委托将指向的方法(观察者的种类)
因此,如果事件发生=>某些指针将在集合上行走,并将调用在事件注册中定义的方法.
我对这个描述是对的吗?是否有可能以某种方式看到'Event'对象的Microsoft .net实现?
Event.Net中没有对象..Net中的事件都是基于MulticastDelegates(并且.Net中的每个代表都是a MulticastDelegate).
如果您有两个相同类型的委托,则可以使用+运算符组合它们,这不是特定于事件的.
MulticastDelegate实现的方式是它有一个调用列表,其中包含在调用此委托时将调用的简单委托.您可以通过调用GetInvocationList()该委托来查看它.
你可以尝试寻找的执行MulticastDelegate,或者说,EventHandler像反射反编译器,但你不会看到太多在那里,这一切都在框架直接实现.
如果你想查看框架的源代码,其中处理调用委托的代码存在,你可以尝试SSCLI,或者你可以尝试查看mono的源代码(但这不会向你显示MS实现).
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |