我正在制作一个控制台应用程序,它将从字符串中调用方法,现在该部分是可以的但是当涉及到参数时我需要一些帮助
这是代码,来自static void main(String[]args)
//Gets the variable for the void/Method
string void_name = Console.ReadLine();
//Making the type in this case its 'Program'
Type type_ = typeof(Program);
//Making the route with the string 'void_name'
MethodInfo method_ = type_.GetMethod(void_name);
//Getting optional parameters
Object[] obj = new Object[] { "" };
foreach (ParameterInfo _parameterinfo in method_.GetParameters())
{
obj[0] = Console.ReadLine();
}
foreach (string obj_string in obj)
{
Console.WriteLine(obj_string);
}
//Calling the functions
method_.Invoke(type_, obj); <-- this is were i get the exception
}
catch (Exception exception_loop)
{
Console.WriteLine(exception_loop.Message);
Console.Clear();
}
}
}
public void helloworld(string something_)
{
Console.WriteLine("\tHeisann: " + something_);
}
答案 0 :(得分:1)
你的方法声明怎么样:
public static void helloworld(string something_)
您正在使用静态方法进行调用。
答案 1 :(得分:0)
您在MethodInfo.Invoke电话中传入了错误的对象。第一个参数必须是必须调用该方法的对象实例。在您的情况下是this
(也称为Program类型的对象)。您传入了对Type类的引用,并且没有名为helloworld
的实例方法。
//Calling the functions
method_.Invoke(new Program(), obj);
一个微小的变化,很大的差异......