从控制台调用方法时出现异常

时间:2013-07-21 19:31:46

标签: c#

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

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

2 个答案:

答案 0 :(得分:1)

你的方法声明怎么样:

public static void helloworld(string something_)

您正在使用静态方法进行调用。

答案 1 :(得分:0)

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

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

一个微小的变化,很大的差异......