C#反射调用小DEMO

程序集的源代码:

namespace DesignMode
{
 class IOCTest
    {
        public void TestO()
        {
            Console.WriteLine("O方法");
        }

        public void TestA(string strA) 
        {
            string res = "A方法||";
            Console.WriteLine(res+strA);
        }

        public string TestB() 
        {
            string res="B方法";
            Console.WriteLine(res);
            return res;
        }

        public int TestC(int num, string strC) 
        {
            if (num == 0)
            {
                Console.WriteLine("C方法的C#||" + strC);
                return 0;
            }
            else
            {
                Console.WriteLine("C方法的JAVA||" + strC);
                return 1;
            }
        }
    }
)

反射调用源代码:

  ////无参
            //var a = Assembly.Load("DesignMode").CreateInstance("DesignMode.IOCTest").GetType().GetMethod("TestO");
            ////第一个参数表示该方法所在类,第二个参数表示该方法的参数
            //a.Invoke(Assembly.Load("DesignMode").CreateInstance("DesignMode.IOCTest"), null);

            ////一个参数
            //var a1 = Assembly.Load("DesignMode").CreateInstance("DesignMode.IOCTest").GetType().GetMethod("TestA");
            ////第一个参数表示该方法所在类,第二个参数表示该方法的参数
            //a1.Invoke(Assembly.Load("DesignMode").CreateInstance("DesignMode.IOCTest"), new object[] { "百事可乐赢大奖" });

            ////两个参数有返回值
            //var a2 = Assembly.Load("DesignMode").CreateInstance("DesignMode.IOCTest").GetType().GetMethod("TestC");
            ////第一个参数表示该方法所在类,第二个参数表示该方法的参数
            //var res = a2.Invoke(Assembly.Load("DesignMode").CreateInstance("DesignMode.IOCTest"), new object[] {0, "百事可乐赢大奖" });

            //无参有返回值
            var a3 = Assembly.Load("DesignMode").CreateInstance("DesignMode.IOCTest").GetType().GetMethod("TestB");
            //第一个参数表示该方法所在类,第二个参数表示该方法的参数
            var res1 = a3.Invoke(Assembly.Load("DesignMode").CreateInstance("DesignMode.IOCTest"), new object[] { });

 

posted @ 2016-04-29 16:23  洛晨随风  阅读(358)  评论(0编辑  收藏  举报