首页 > 编程语言 >C#获取事件绑定的方法

C#获取事件绑定的方法

时间:2024-04-22 10:37:39浏览次数:22  
标签:C# 绑定 current 获取 事件 方法 public MyEvent

public class MyEventArgs
{
}
public delegate void MyEventHandler(object sender,MyEventArgs args);
public class MyControlClass:Control { public event MyEventHandler MyEvent; public Delegate[] GetEventDelegates() { if(MyEvent!=null) return MyEvent.GetInvocationList(); else return null; } }

在类中直接使用event的GetInvocationList方法即可。那能否我们自己的判断执行某一个绑定的方法呢?

Delegate current = delegates[i];
//..判断current.Method各个属性,如果调用
current.Method.Invoke(current.Target,new object[] { this,args } );

可能有人会问,为什么MyControlClass需要继承自Control,从本例子来说这不是必须的。但事件还是建议更多在界面控件上使用。

又或者说事件适合于两个线程的业务是比较分隔的对象。就是说事件内各个绑定的方法内的代码应该是一个比较完整逻辑代码。

对于复杂业务,某些人可能会使用事件绑定来影响主业务流程。但我建议直接调用不同逻辑类的方法。我们可以通用方法名与其参数,大概知道方法做了什么。而事件则完全隐藏了工作的内容,这不利于快速阅读和快速了解业务全貌。

标签:C#,绑定,current,获取,事件,方法,public,MyEvent
From: https://www.cnblogs.com/kevin-Y/p/18150128

相关文章

  • JavaScript 数组增强
    Javascript的数组最近通过新的原型方法(例如toReversed、toSorted、toSpliced和with)获得了新的力量。这些新方法提供了在JavaScript中更改数组的额外方​​法。它允许进行更改并获取包含这些更改的数组的新副本。 Array.prototype.toReversed:-此方法返回一个新数组,其元素顺......
  • 给vc做快照过程中vc卡死
    问题:vc做快照的过程中卡死,无法登陆。重启vc,结果报有任务在运行,无法重启或关机。打算结束正在运行的做快照的任务。 1、ssh登陆到VC所在ESXI主机2、查看vc的Vmid[root@esxi01:~]vim-cmdvmsvc/getallvms结果输出:VmidNameFileGuestOSVersionAnnotation3VMware......
  • 在Linux中,/usr和/etc目录的用途有什么?
    在Linux操作系统中,/usr和/etc目录各有其明确的用途和重要性:1./usr目录:/usr目录是系统中用户程序和相关文件的主要存储位置,主要用于存放那些并非系统启动所必需的、但对于大多数或全部用户有用的数据。/usr目录下的结构划分细致,主要包括以下子目录:/usr/bin:存放用户和......
  • Java开启事务(@Transactional)
    开始事务的代码可以使用Spring的事务管理器来实现。具体步骤如下:1.在Spring配置文件中配置事务管理器和事务通知器:```<beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"ref="......
  • clickhouse如何表结构
     输出表名:clickhouse-client--host192.168.1.136--port=9000--password123456--multiquery--query="usedb_pushmsg;showtables;">/tmp/db_pushmsg.txt 输出表结构#!/bin/bashecho'usedb_pushmsg;'>>/tmp/db_pushmsg_tableDDL.s......
  • [MYSQL] MYSQL ERROR CODE 错误编号合集
    1[MYSQL]MYSQLERRORCODE错误编号合集错误码错误解释备注说明错误:1236SQLSTATE:HY000(ER_MASTER_FATAL_ERROR_READING_BINLOG)消息:从二进制日志读取数据时,获得来自主服务器的致命错误%d:’%s’。错误:1237SQLSTATE:HY000(ER_SLAVE_IGNORED_TABLE)消息:......
  • 技术主管问我 PHP的opcache 是用来干嘛的 ?
    更多:https://www.shanhubei.com/archives/55271.htmlopcache从字面意思,肯定是缓存这一块的。但是你是否知道它的工作原理是怎样的呢?这里一点一点让你了解!PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。而Opcache又是优化PHP性能不可缺失的......
  • docker harbor-入门指南
    一、Harbor介绍1.介绍Harbor是一个开源注册表,它使用策略和基于角色的访问控制来保护工件,确保图像被扫描且没有漏洞,并将图像签名为受信任。Harbor是CNCF毕业项目,可提供合规性、性能和互操作性,帮助您跨云原生计算平台(如Kubernetes和Docker)一致、安全地管理工件。2.官......
  • OPTEE - CA和TA的交互
    optee整体架构如下图(图片来源:https://zhuanlan.zhihu.com/p/553611279)从以下示例代码中(tab:example-hello_world)我们可以看到,在CA(clientapplication)端调用teeclientAPI的流程如下:TEEC_InitializeContext()TEEC_OpenSession()TEEC_InvokeCommand()TEEC_CloseSessi......
  • Java中用forEach和lamad优化for循环
    1importjava.util.Arrays;2importjava.util.List;3importjava.util.function.IntBinaryOperator;456List<String>names=Arrays.asList("Alice","Bob","Charlie");78//方式一for输出9for(inti=0;i<......