C# 基于变量值调用方法
我有1000个方法,叫做method0001,method0002,方法1000。 我有一个变量,取值在1到1000之间 如果变量的值是x,我想调用methodx。例如,如果变量的值是34,我想调用method0034。请问我如何用C#编码C# 基于变量值调用方法,c#,variables,methods,C#,Variables,Methods,我有1000个方法,叫做method0001,method0002,方法1000。 我有一个变量,取值在1到1000之间 如果变量的值是x,我想调用methodx。例如,如果变量的值是34,我想调用method0034。请问我如何用C#编码 很多人都在问Methodwxyz需要什么。每种方法都是不同类型的数学问题 我已经这样做了,遵循有用的评论,但我得到了错误(编辑了前面的问题) 谢谢你可以通过反思来做到这一点。编辑快速示例(忽略调用参数)。关于反思的一些提示: 如果您得到一个nullexce
很多人都在问Methodwxyz需要什么。每种方法都是不同类型的数学问题 我已经这样做了,遵循有用的评论,但我得到了错误(编辑了前面的问题)
谢谢你可以通过反思来做到这一点。编辑快速示例(忽略调用参数)。关于反思的一些提示:
- 如果您得到一个nullexception,这意味着它找不到该方法
- 您正在调用的方法必须是公共的
- 如果使用模糊处理,则该方法的名称可能不同
使用switch语句或具有委托类型的字典。然而,这似乎有点可疑,我要问的第一个问题是,为什么有1000个名为methodNYeah的方法看起来应用程序的设计需要很多重构。我认为考虑到这种情况,最好是进行反思。如果您有1000种方法,称为Method0001、MethodXXXX、Method1000,那么您对任何问题的解决方案都可能是错误的。我想有一个更好的方法来实现你想做的事情。在没有看到您的代码或不知道这些方法的作用的情况下,很难给出建议。许多人都在问Methodwxyz需要什么。每种方法都是一种不同类型的数学问题,需要不同类型的随机变量来生成这些问题,正如人们所提到的,你确实有两种选择,一个大的开关语句(我会使用Excel之类的东西来编写代码,然后将其复制/粘贴到VS中)或反射。反射速度会慢一些。但是,如果您创建一个
字典
,它会更快。int将是您的方法编号,MethodInfo将引用您要调用的方法。在启动时反思所有方法,构建字典。然后,在运行时,使用字典选择正确的MethodInfo来调用,但是我得到了错误:“NullReferenceException:对象引用未设置为对象的实例”您能建议吗?TY这意味着您要查找的方法不存在。我将发布额外的代码,显示您是如何尝试从哪一点调用该方法的。更有可能的是,您正在错误的位置搜索方法。在问题中添加了代码。
using System.Collections.Generic;
using UnityEngine;
public class TextControl : MonoBehaviour
{
public static TextControl instance;
void Start()
{
instance = this;
}
// Update is called once per frame
void Update()
{
this.GetType().GetMethod("Template00" + "1").Invoke(this, null);
}
public static string Templates001()
{
// doing something here
}
}
public class Program
{
public static void Main(string[] args)
{
Check method1 = new Check(1);
Check method2 = new Check(2);
}
}
public class Check
{
public Check(int x)
{
this.GetType().GetMethod("Method" + x).Invoke(this, null);
}
public void Method1()
{
Console.WriteLine("Method 1");
}
public void Method2()
{
Console.WriteLine("Method 2");
}
}