已知一个类型的方法,如何知道这个方法是否有参数,如果有,如何得知每个参数的类型?
如:
  ClassA a = new ClassA();
  比如a 有一个方法A.
 这时如何得知方法A是否有参数以及每个参数的类型?另,如果ClassA 是一个Web Service 的类型呢?

解决方案 »

  1.   

    MethodInfo类:using System;
    using System.Reflection;public delegate void MyDelegate(int i);
    public class MainClass 
    {
        public event MyDelegate ev;
        public void Fire(int i) 
        {
            ev += new MyDelegate(this.Fire);
        }    public static void Main() 
        {
            Type deleg = typeof(MainClass).GetEvent("ev").EventHandlerType;
            MethodInfo invoke = deleg.GetMethod("Invoke");
            ParameterInfo[] pars = invoke.GetParameters();
            foreach (ParameterInfo p in pars) 
            {
                Console.WriteLine(p.ParameterType);
            }
        }
    }
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Reflection;
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                System.Type type = System.Type.GetType("ConsoleApplication3.A");
                System.Reflection.MethodInfo[] infos = type.GetMethods();
                foreach (System.Reflection.MethodInfo info in infos)
                {
                    if (info.Name == "Print")
                    {
                        Console.WriteLine(info.Name);                    ParameterInfo[] parameters = info.GetParameters();
                        foreach (ParameterInfo p in parameters)
                        {
                            Console.WriteLine(p.ParameterType.FullName);                    }
                    }
                }
                Console.ReadLine();         }
        }
        public class A
        {
            public A()
            {
                //
                // TODO: 在此处添加构造函数逻辑
                //
            }
            public void Print(string x)
            {        }
            public void Print()
            {
            }
        }
    }
      

  3.   

    如果方法是远程一个Web Service 的一个方法呢,用反射是否能得到这个方法的每个参数的类型?