![]() |
1
9
可以使用反射:
|
![]() |
2
8
代码:
|
![]() |
3
7
如果你能用 Reactive Extensions for .NET ,你可以简化这个。
Observable from an event
编辑:为了演示,我制作了一个完整的示例程序(我将粘贴在下面)。
我将可观察的创建和订阅移动到一个方法中(
这将获取您的代码,并将其更改为:
运行时,此代码将打印:
你只有一次,一次触发你的事件。
|
![]() |
4
2
|
![]() |
5
1
它有用吗?如果是这样,那我就说去争取吧。一个看起来很优雅的一次性活动。
|
![]() |
6
1
就我个人而言,我只是为任何类型的事件创建了一个专门的扩展方法。 下面是我现在正在使用的东西的基本版本:
我之所以认为这是最好的解决方案,是因为您通常不需要只处理一次事件。您还经常需要检查事件是否已经通过。。。例如,下面是上述扩展方法的另一个版本,它使用附加属性检查元素是否已加载,在这种情况下,它只需立即调用给定的处理程序:
|
![]() |
7
0
通常,当我需要像您描述的那样一次性执行事件处理程序时,我真正需要的是:
|
|
8
0
有点像。。。
|
![]() |
Sergei · 删除数据框中多个列的列表中的某些元素 3 年前 |