WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发C语言 C#发现之旅:于动态编译的VB.NET脚本引擎(上) 阅读

C#发现之旅:于动态编译的VB.NET脚本引擎(上)

 2010-09-30 21:08:18 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示: 这段代码功能也比较简单,首先输出“Option Strick Off”语句,C#发现之旅:于动态编译的VB.NET脚本引擎(上)(9),然后使用mySourceImports输出若干个Imports语句,这里的mySourceImports是一个字符串列表,若缓存区中没有

这段代码功能也比较简单,首先输出“Option Strick Off”语句,然后使用mySourceImports输出若干个Imports语句。这里的mySourceImports是一个字符串列表,用于存放引用的名称空间,比如“System”,“Microsoft.VisualBasic”等等,用于组成VB.NET脚本的Imports语句。然后输出Namespace和Module代码块来包括了用户提供的原始代码文本。这里的strSourceText就是用户提供的原始代码文本。最后变量 strRuntimeSource中就包含了实际运行的VB.NET代码文本。

编译脚本

程序生成完整的VB.NET脚本代码文本后就可以编译了,为了提高效率,这里袁某定义了一个静态myAssemblies的哈希列表变量,定义该变量的代码如下

/// <summary>
/// 所有缓存的程序集
/// </summary>
private static Hashtable myAssemblies = new Hashtable();

该列表缓存了以前编辑生成的程序集,键值就是脚本文本,键值就是程序集。若缓存区中没有找到以前缓存的程序集那脚本引擎就可以调用VB.NET编译器编辑脚本了。

为了丰富脚本引擎的开发接口,笔者使用以下代码定义了ReferencedAssemblies属性。

/// <summary>
/// VB.NET编译器参数
/// </summary>
private CompilerParameters myCompilerParameters = new CompilerParameters();
/// <summary>
/// 引用的名称列表
/// </summary>
public StringCollection ReferencedAssemblies
{
    get
    {
        return myCompilerParameters.ReferencedAssemblies;
    }
}

上一页  4 5 6 7 8 9 10  下一页

Tags:发现 之旅 动态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接