下面是兩個反射的實例
案例1:
動態調用類中的方法、傳入參數,並獲得返回值。
xxxx:類名
Event:類中的方法
pra1,pra2,pra3:方法對應的入參
DoRet:方法返回的執行結果
Type t = typeof(xxxx);//類名 MethodInfo mt = t.GetMethod(Event);//加載方法 string DoRet = mt.Invoke(this, new object[] { pra1, pra2, pra3 }).ToString();//執行
案例2:
動態加載外部DLL,並執行其中的方法。
xxx:外部Dll的名字
zzz:Dll中的類名
yyy:方法名
pra1,pra2:入參
Ret:調用yyy的返回結果
Assembly ass = null; Type tp; Object obj; ass = Assembly.Load("xxx");//dll名字 tp = ass.GetType("xxx.zzz");//類名 obj = Activator.CreateInstance(tp);//實例化 MethodInfo meth = tp.GetMethod("yyy");//加載方法 int Ret= meth.Invoke(obj, new Object[] { pra1, pra2 }).ToString();//執行
案例3:
動態執行方法和匹配參數
1.從http請求中解析出方法method和輸入參數paras
2.從類中獲取method的入參列表lists
3.匹配lists和paras,如果paras少於lists,則用空值代替
4.調用對應的方法