![]() |
1
5
事件只是多播委托,因此事件处理程序将按照添加到事件中的顺序引发。
更好的做法是将事件冒泡到父处理程序中,以便在进行自己的处理之前从每个继承的页面进行处理。这样就有了明确的联系,代码很容易理解,而且您不必依赖于关于事件顺序的假设。 编辑新问题:
你应该看看我的答案 this post.
有很多方法可以解决这个问题。首先,只需让基类调用可以在派生页中重写的抽象或虚拟方法。在基本页中的按钮单击处理程序中,执行所有验证,然后调用派生页的抽象“DoSave()”方法,并进行检查以确保其成功。 derived classes raise the event 我想补充一点,似乎您正在将大量内容加载到基类按钮中。当页面呈现时,您是否可以执行匿名ID和GET/POST检查,如果按钮没有权限,则不呈现按钮? |
![]() |
2
3
虽然我不准备提供解决方案(因为这需要更多地了解您的设计),但除了告诉您将“保存”(和类似事件)逻辑分离到它们自己的类层次结构中,并在一次生命中从事件处理程序调用它们之外。但是,我可以对您的原始问题进行评论(在您以粗体编辑之前)。设置的问题是,虽然您可以按特定顺序引发事件,但任何.Net Framework中的事件都不能保证按交付顺序进行。当您在dev机器上进行测试时,这些事件可能看起来是有序的,但在实际部署中,当系统负载变高时,这些事件将首先被推迟,以便进行其他操作。事件 到达 对他们的听众来说,基本上是随机的。 您不应该根据接收事件的顺序构建逻辑。每个事件必须只考虑当前状态,不能假设任何其他事件。当你最需要的时候,你的事件链就会断开。 |
![]() |
3
1
你也可以考虑更换
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |