它可能是
的副本How to dynamically call a class' method in .NET?
和
但是上面两个都有解决方案,正如答案所说的那样复杂,我猜不是初学者。
和
这两个解决方案都包含“类型”,我认为这些代码用于定义方法所属的类。
像
static void caller(String myclass, String mymethod)
{
// Get a type from the string
Type type = Type.GetType(myclass);
// Create an instance of that type
Object obj = Activator.CreateInstance(type);
// Retrieve the method you are looking for
MethodInfo methodInfo = type.GetMethod(mymethod);
// Invoke the method on the instance we created above
methodInfo.Invoke(obj, null);
}
但我的初始网站只包含一个所有功能共有的类
具有“功能名称”“func id”
的数据库假设: - 函数名称与代码
中的名称完全相同我只想实现以下目标
根据文本框中提到的id获取函数名的字符串值
现在调用该函数,其名称在字符串变量
methodinfo,需要“type.GetMethod(mymethod);”
...
答案 0 :(得分:3)
为了调用函数,您需要指定声明此函数的类型。如果您要调用的所有函数都在公共类中声明,则可以执行以下操作:
static void CallFunc(string mymethod)
{
// Get a type from the string
Type type = typeof(TypeThatContainsCommonFunctions);
// Create an instance of that type
object obj = Activator.CreateInstance(type);
// Retrieve the method you are looking for
MethodInfo methodInfo = type.GetMethod(mymethod);
// Invoke the method on the instance we created above
methodInfo.Invoke(obj, null);
}
如果您要调用的函数是静态的,则不需要类型的实例:
static void CallFunc(string mymethod)
{
// Get a type from the string
Type type = typeof(TypeThatContainsCommonFunctions);
// Retrieve the method you are looking for
MethodInfo methodInfo = type.GetMethod(mymethod);
// Invoke the method on the type
methodInfo.Invoke(null, null);
}
答案 1 :(得分:1)
我看到了两个解决方案: