C#发现之旅:于动态编译的VB.NET脚本引擎(上)
2010-09-30 21:08:18 来源:WEB开发网这段代码功能也比较简单,首先输出“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;
}
}
更多精彩
赞助商链接