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[] { });
积累小的知识,才能成就大的智慧,希望网上少一些复制多一些原创有用的答案