gpt4 book ai didi

c# 仅使用方法名称(文本)向事件添加监听器

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:42 24 4
gpt4 key购买 nike

<分区>

我正在尝试使用反射将类中的方法添加到事件中。这是我的设置。

  1. 拥有一个带有 keyPressDown 和 keyPressUp 方法的类。我在这门课上也有一个事件。 keyPressDown 和 keyPressUp 将触发订阅它的任何方法(如果有的话)。

这些额外的方法是控制 RGB 发光二极管。一种方法可以闪烁一种颜色,另一种可以使一种颜色褪色,等等。

  1. 我可以订阅事件,例如 myEventKeyUp += myClass.MethodA;

  2. 我的问题是,我将用户需要的配置存储在数据库中。所以我唯一能想到的就是将方法名称存储为文本并使用反射将其添加到事件处理程序中。

代码示例:

类我的类

public event delegateKeyDown keyDownEvent;

public event delegateKeyUp keyUpEvent;

public void KeyUp()
{
joystick.SetBtn(false, 1, vJoyButtonID);
if (keyUpEvent != null) keyUpEvent();
}

public void KeyDown()
{
joystick.SetBtn(true, 1, vJoyButtonID);

// IF WE HAVE ANY LISTENERS THEN FIRE THEM
if (keyDownEvent != null) keyDownEvent();
}

public void MethodA()
{
// DO SOMeTHING HERE
}

主窗体

button.keyDownEvent += button.SetRandomColor;

button.keyUpEvent += button.TurnOff;

我需要做的是:button.keyUpEvent += MyClass.GetType().GetMethod("MethodA");

我知道你不能做我想用反射做的事情,我读到我可以使用反射来获取包含事件处理程序的委托(delegate),并通过这种方式添加它,但我不确定(或对此不清楚)。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com