gpt4 book ai didi

c# - 使用动态方法创建类

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

所以我基本上想做的是在 C# 中创建一个动态菜单框架。我基本上有一个菜单元素(此时只是一个上面有一些文本的矩形),它包含一个 DoAction() 方法。只要单击矩形,就会运行此方法。我想要的是能够在运行时定义 DoAction 方法。因此,例如,我可以实例化一个菜单元素,其 DoAction() 方法执行函数 x(),然后实例化另一个菜单元素,其 DoAction() 方法执行函数 y()。我有这样的东西。

public class MenuElement {
public void DoAction(); // method I want to be dynamic

public MenuElement((text, height, width, etc), method myMethod){
DoAction = myMethod;
}
}

MenuElement m1 = new MenuElement(..., function x());
MenuElement m2 = new MenuElement(..., function y());

m1.DoAction(); // calls x()
m2.DoAction(); // calls y()

这是我知道如何用 Javascript 做的事情,但我对 C# 不太熟悉,我怀疑 .Net 会让我比 JS 多经历一些困难。从我正在阅读的内容来看,我将不得不使用委托(delegate)?我找不到任何我可以真正轻松地遵循的教程。

最佳答案

使用 Action 类。在您的示例中,它将是:

public class MenuElement {
public Action DoAction; // method I want to be dynamic

public MenuElement((text, height, width, etc), Action myMethod){
DoAction = myMethod;
}
}

MenuElement m1 = new MenuElement(..., new Action(() => {
// your code here
});

MenuElement m2 = new MenuElement(..., new Action(() => {
// your code here
));

m1.DoAction(); // calls x()
m2.DoAction(); // calls y()

有关详细信息,请参阅 MSDN

关于c# - 使用动态方法创建类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37506317/

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