在這段 代碼中,程序首先獲得腳本模塊的類型,在這裡類型全名為 “NameSpaceXVBAScriptEngIEn. mdlXVBAScriptEngine”,然後使用反射獲得該 類型中所有的公開或未公開的靜態成員方法對象,對於其中的每一個方法創建一個 ScriptMethodInfo類型的腳本方法信息對象來保存這個方法的一些信息,將這些信息保存到 myScriptMethods列表中供以後調用。
筆者配套定義了ScriptMethodInfo類型和 myScriptMethods列表,定義它們的代碼如下
/// <summary>
/// 所有腳本方法的信息列表
/// </summary>
private ArrayList myScriptMethods = new ArrayList();
/// <summary>
/// 腳本方 法信息
/// </summary>
private class ScriptMethodInfo
{
/// <summary>
/// 模塊名稱
/// </summary>
public string ModuleName = null;
/// <summary>
/// 方法名稱
/// </summary>
public string MethodName = null;
/// <summary>
/// 方法對象
/// </summary>
public System.Reflection.MethodInfo MethodObject = null;
/// <summary>
/// 方法返回值
/// </summary>
public System.Type ReturnType = null;
/// <summary>
/// 指向該方法的委托
/// </summary>
public System.Delegate MethodDelegate = null;
}
使用腳本方法信息列表,腳本引擎調用腳 本方法時就不需要使用反射查找腳本方法了,只需要在腳本方法信息列表中快速的查找和調 用。