-4

我正在制作一个控制台应用程序,它将从字符串调用方法,现在这部分没问题,但是当涉及到参数时,我需要一些帮助

这是代码,这是来自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_);
    }
4

2 回答 2

1

你的方法声明是这样的:

public static void helloworld(string something_)

您正在从静态方法调用。

于 2013-07-21T22:10:50.550 回答
0

您在MethodInfo.Invoke调用中传入了错误的对象。第一个参数必须是必须调用该方法的对象实例。在您的情况下是this(又名 Program 类型的对象)。您传入了对 Type 类的引用,该类没有调用实例方法helloworld

   //Calling the functions
   method_.Invoke(new Program(), obj);

小改变,大不同……

于 2013-07-21T20:49:04.013 回答