发布
社区首页 >问答首页 >处理构造函数中激发的事件

处理构造函数中激发的事件
EN

Stack Overflow用户
提问于 2009-11-08 14:28:52
回答 2查看 758关注 0票数 2
代码语言:javascript
代码运行次数:0
复制
Work = New ExampleWork()  

这里的Work是一个withevents变量,我使用handles子句来处理由ExampleWork对象触发的各种事件。但是,在ExampleWork的构造函数返回之前,不会分配事件处理程序。现在,我如何处理从构造函数激发的任何事件?我可以将构造函数逻辑移到一个单独的方法中,并在构造函数返回后调用它,从而处理所有触发的事件,包括从构造函数触发的事件。然而,它看起来并不好。处理这种情况的最佳方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2009-11-08 15:55:54

忽略事件处理的VB语法糖,如果一个对象在其构造过程中引发了自身的事件,那就是一种设计的味道。只有两种方式可以订阅这些事件:

  • 对象可以在其仍在构造的同时向外部世界公开自身,例如,通过回调或静态方法调用。这通常是一个糟糕的想法--如果一个对象还在构造中,它通常不能被认为是“可以使用的”。特别是,可能还有更多派生的构造函数主体需要调用。
  • 对象可以自己处理事件。这并不是很糟糕,但这些事件处理程序仍然需要知道,它们将在部分构造的对象上被调用。

基本上,尽量避免在构造过程中在对象上引发事件。理想情况下,让构造函数本身变得简单漂亮,让对象保持有效的初始状态。

票数 3
EN

Stack Overflow用户

发布于 2009-11-09 23:46:29

处理此问题的一种方法是使用表单或类布尔变量,例如,将其初始化为false dim loading as boolean = true。然后在加载或初始化完成后将其设置为true。检查违规事件处理程序中的标志。

不过,在实现这样一个乱七八糟的标志之前,我肯定会检查一下Tony的建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1695568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档