为了账号安全,请及时绑定邮箱和手机立即绑定

如何以编程方式更改我调用的函数名称

如何以编程方式更改我调用的函数名称

C#
一只萌萌小番薯 2023-08-20 14:38:53
我试图根据组合框的信息调用函数。用户将更改组合框,在此过程中,我们根据与固定文本连接的组合框文本中的数据调用函数。我正在尝试这样做,因此每次获得新版本时,我只需添加一个文件夹,而不必像在 case 语句中那样进入代码添加新函数名称。组合框的文本为v6.1v6.4 v7.2v8.6等等我想要调用的函数名为 Getinfo_,并添加了组合框中的文本,扩展名为 . 替换为 _ 例如,我会从组合框中选择 v6.1,这样做时我会调用名为 Getinfo_v6_1 的函数经过大量的思考、搜索和尝试,我已经接近但还不够接近。我想我需要使用反射(也许不需要)并且private void cmbobx_version_SelectedIndexChanged(object sender, EventArgs e){    Type t = this.GetType(); //need to get the type    MethodInfo method = t.GetMethod("Getinfo" + cmbobx_version.Text.Replace('.', '_'));   //put together function name     method.Invoke(this, new object[] {Fridge, "Order" }); //call function with parameters}不幸的是,这在调用时停止,说该方法为 NULL,我不明白为什么会这样,除了也许我完全误解了我在做什么。我想调用的函数看起来有点像下面的public void Getinfo_v6_1(ComboBox inFocusComboBox, string action){  switch (inFocusComboBox.Text)        {           case "Red": Price = 11254; break;           case "Blue": Price = 11278; break;           case "Green": Price = 11354; break;         }}public void Getinfo_v6_4(ComboBox inFocusComboBox, string action){   switch (inFocusComboBox.Text)        {            case "Red": Price = 254; break;            case "Blue": Price = 278; break;            case "Green": Price = 354; break;          }}即使您有更好的方法来做我需要做的事情,我们也非常感谢您的所有帮助。
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您应该阅读有关设计模式的信息,例如您可以使用模板设计模式创建实现您的功能的多态项。尽量避免反射,因为它很“慢”并且类型不安全。



查看完整回答
反对 回复 2023-08-20
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

我确实错过了下划线,在使用它时我没有注意到,因为我还进行了文本替换。并认为这一切都是正确的。即使在调试时我没有看到它,通常我们也看不到明显的东西,这就是为什么那些比我聪明的人的第二意见总是好的。


现在的工作代码如下。


private void cmbobx_version_SelectedIndexChanged(object sender, EventArgs e)

{

    Type t = this.GetType(); //need to get the type

    MethodInfo method = t.GetMethod("Getinfo_" + cmbobx_version.Text.Replace('.', '_'));   //put together function name

     method.Invoke(this, new object[] {Fridge, "Order" }); //call function with parameters

}

请务必小心,因为这些函数将没有引用,但它会编译并运行。当您调用正确的函数时,这一切都会在运行时起作用。


查看完整回答
反对 回复 2023-08-20
  • 2 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信