如何获取具有可变参数的方法的参数?

时间:2015-07-23 10:53:21

标签: c#

我在获取每个类中覆盖的方法的参数时遇到问题,正如它所说的

  

错误2参数1:无法从'方法组'转换为   'System.Reflection.MethodInfo'我的   project \ Commands \ Help.cs 44 61 MySteamBot

我有这个代码,错误来自。 (这是Help类的一部分,是Command类的另一个子类。)

public string FullName
{
  get { return String.Format("{0} {1}", this.FirstName, this.Surname); }
}

这是我的Command类,加上另一个子类。

    private Dictionary<string, Type> GetParams(System.Reflection.MethodInfo method)
    {
        Dictionary<string, Type> parameters = new Dictionary<string, Type>();
        if (method != null && method.GetParameters().Length > 0)
        {
            foreach (ParameterInfo param in method.GetParameters())
            {
                parameters.Add(param.Name, param.ParameterType);
            }
        }

        return parameters;
    }

    public override void Run(string commandName)
    {
        foreach (KeyValuePair<string, Command> command in MySteamBot.Command.commandList)
        {
            if (command.Key.ToLower() == commandName.ToLower())
            {
                Console.WriteLine(command.Key);
                Console.WriteLine("\t{0}", command.Key);
                Console.WriteLine();
                Console.WriteLine("Arguments:");
                foreach (KeyValuePair<string, Type> param in GetParams(command.Value.Run))
                {
                    Console.WriteLine("\t{0}, {1}", param.Key, param.Value.ToString());
                };
            }
        }
    }

我明白它在运行时无法获得'动态'方法的参数,但那我该怎么做呢?

对不起,如果这太模糊了,我可以根据需要提供更多细节。

0 个答案:

没有答案