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:发现 之旅 动态

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