|
22
|
| Daniel Earwicker · 技术社区 · 16 年前 |
|
|
1
7
没什么,你什么也没失去。我一直在使用
|
|
|
2
2
我也不喜欢事件处理程序模式。在我看来,Sender对象并没有那么有帮助。如果某个事件表示某个对象发生了某些事情(例如更改通知),那么将信息放在nvarchar中会更有帮助。我能为Sender找到的唯一用途是取消订阅某个事件,但并不总是清楚应该取消订阅哪个事件。 顺便说一句,如果我有其他选择,Event就不会是AddHandler方法和RemoveHandler方法;它只是一个AddHandler方法,它将返回一个可用于取消订阅的MethodInvoker。我希望第一个参数是取消订阅所需的MethodInvoker的副本,而不是Sender参数(以防对象发现自己正在接收取消订阅调用者丢失的事件)。标准的MulticastDelegate不适合分派事件(因为每个订阅者都应该收到不同的取消订阅委托),但取消订阅事件不需要在调用列表中进行线性搜索。 |