java - 单独的代码层来处理 C#/Java 中的事件

标签 java c# design-patterns layer

我想编写一个单独的软件代码层,它将执行输入过滤工作并且此代码独立运行。 脚本/代码层将在每个事件(例如,按钮点击等)上运行。 我不想将该单独的代码脚本附加到任何对象。

每次事件发生时,它应该从我单独的代码层传递,然后如果我的代码层允许,它会转到实际代码(函数)

这怎么可能? 如何编写独立的代码层,使我的代码层不影响事件的实际功能并单独工作

我只是写了这个虚拟类(为了更清楚),它可以作为单独的代码层工作。

class FiltrationCodeLayer {
    public int code;
    public void validate(){
        if (code == 200)
        {
            ///Execute the event--How to allow?
        }
        else { 
            // dont execute the event- How to prevent??
        }
    }
}

在运行它的实际代码之前,事件系统将如何调用此 validate() 方法,如下面的代码片段。在触发 OnButtonClick 方法之前,我想运行上面的代码。

class ActualCode
{
    public void OnButtonClick()
    {
        Debug.Log("button click executed");
    }
}

最佳答案

您可以执行此操作的一种方法是“实现”您自己的控件并覆盖 On{WhateverEvent} 方法:

public class MyButton: Button
{
     protected override void OnClick(EventArgs e)
     {
          if (validate())
          {
             base.OnClick(e);
          }

          //Do nothing or whatever
     }
}

原因是事件是在 base.OnClick(EventArgs) 中调用的。

关于java - 单独的代码层来处理 C#/Java 中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36542990/

相关文章:

java - 来自 TreeItem 的通配符和泛型

java - if(a&&b) 是否应该比 if(a) if(b) 花费更多时间?

java - 修复记录: Cell information from worksheet created

design-patterns - F# - 工厂方法设计模式

design-patterns - 什么时候使用哪种模式?

java - 使用 Spring JDBC 模板检索自定义自动生成的 key

java - 如何确定tomcat的堆大小和permgen空间的分配?

java - Spring 4.2.5.release 中 AbstractDependencyInjectionSpringContextTests 的等效类是什么

c# - 用于 “SecureString”的TypeConverter不支持转换字符串

java - 根据值实现不同流程的最佳设计是什么?