C#動態執行函式:利用反射實現
轉自:http://hi.baidu.com/lomasoft/item/c051dddb4cc5e7e954347f88
希望能夠在通過指定方法的字串就能夠執行類庫中的任何函式.在js中可以使用eval asp中可以使用Execute vb中好象也有eval.
using System.Reflection;名稱空間包含提供載入型別、方法和欄位的有組織的檢視的類和介面,具有動態建立和呼叫型別的功能。
using System.Reflection;
namespace myCommon
{
public class CExecuteMethod
{
/// <summary>
/// 根據字元執行方法
/// </summary>
/// <param name="path">名稱空間</param>
/// <param name="className">類名</param>
/// <param name="MethodName">方法名</param>
/// <param name="parameters">引數</param>
/// <returns>返回object型別</returns>
public static object Execute(string path,string className,string MethodName,params object[] parameters)
{
//動態從程式集中查詢所需要的類並使用系統啟用器建立例項最後獲取它的Type
Type type=Assembly.Load(path).CreateInstance(path+"."+className).GetType();
//定義引數的個數,順序以及型別的儲存空間;
Type[] parametersLength;
if (parameters != null)
{
//如果有引數建立引數儲存空間並依次設定型別
parametersLength = new Type[parameters.Length];
int i=0;
foreach (object obj in parameters)
{
parametersLength.SetValue(obj.GetType(),i);
i++;
}
}
else
{
//沒有引數就為空
parametersLength = new Type[0];
}
//查詢指定的方法
MethodInfo methodinfo = type.GetMethod(MethodName,parametersLength);
//如果是靜態方法就執行(非靜態我沒試過)
if (methodinfo.IsStatic)
{
//呼叫函式
return methodinfo.Invoke(null, parameters);
}
return null;
}
}
}
相關文章
- 利用 PHP 反射實現內建函式文件PHP反射函式
- C# 中利用執行時編譯實現泛函C#編譯
- (C#)利用反射動態呼叫類成員C#反射
- c#通過反射動態執行類的例項及靜態方法C#反射
- 不使用反射進行C#屬性的執行時動態訪問反射C#
- 利用動態建立自動化介面實現VB的函式指標呼叫 (轉)函式指標
- 反射的妙用:C#通過反射動態生成型別繼承介面並實現反射C#型別繼承
- Swift實現多執行緒map函式Swift執行緒函式
- java反射——實現程式的動態性Java反射
- 反射-動態代理的概述和實現反射
- FSM狀態機及C#反射實現邏輯C#反射
- FastHook——巧妙利用動態代理實現非侵入式AOPASTHook
- 利用“匯出函式和DCOM介面”執行穿透指令、實現橫向滲透函式穿透
- 運用反射實現ejb動態委派 (轉)反射
- 利用指標實現strncmp函式功能指標函式
- [.net 物件導向程式設計進階] (20) 反射(Reflection)(上)利用反射技術實現動態程式設計物件程式設計反射
- C#利用反射建立例項C#反射
- Android 動態代理以及利用動態代理實現 ServiceHookAndroidHook
- 使用ASM框架實現統計函式執行時間ASM框架函式
- JS 利用高階函式實現函式快取(備忘模式)JS函式快取模式
- C#函式實現的小功能集合C#函式
- 利用訊號量實現執行緒順序執行執行緒
- C#實現單例項執行C#單例
- Redux中利用函式式元件替代onEnter進行登入狀態驗證的實踐Redux函式元件
- spring+groovy實現動態程式碼注入執行Spring
- 如何用node.js實現動態執行指令碼Node.js指令碼
- C# 反射 + Quartz,實現流程處理C#反射quartz
- 自執行函式函式
- 立即執行函式函式
- 利用 DynamicLinq 實現簡單的動態表示式構建查詢
- C#根據反射動態建立ShowDoc介面文字資訊C#反射
- c#動態執行字串指令碼(最佳化版)C#字串指令碼
- C#呼叫IronPython動態執行Python程式碼C#Python
- (函式)實現strstr函式函式
- 利用API函式實現影像淡入淡出效果 (轉)API函式
- 利用 clip-path 實現動態區域裁剪
- 利用iptables實現埠對映(支援動態域名)
- 胡扯JS系列-匿名函式的自動執行JS函式