C#发现之旅:于动态编译的VB.NET脚本引擎(上)
2010-09-30 21:08:18 来源:WEB开发网根据上述对运行时脚本的设计,用户可以导入其他的名称空间,于是脚本引擎定义了SourceImports属性来自定义导入的名称空间,定义该属性的代码如下
/// <summary>
/// 源代码中使用的名称空间导入
/// </summary>
private StringCollection mySourceImports = new StringCollection();
/// <summary>
/// 源代码中使用的名称空间导入
/// </summary>
public StringCollection SourceImports
{
get
{
return mySourceImports;
}
}
在脚本引擎的初始化过程中,程序会默认添加上System和Microsoft.VisualBasic两个名称空间。随后程序使用以下代码来生成实际参与编辑的脚本代码文本
// 生成编译用的完整的VB源代码
string ModuleName = "mdlXVBAScriptEngine";
string nsName = "NameSpaceXVBAScriptEngien";
System.Text.StringBuilder mySource = new System.Text.StringBuilder();
mySource.Append("Option Strict Off");
foreach (string import in this.mySourceImports)
{
mySource.Append(""r"nImports " + import);
}
mySource.Append(""r"nNamespace " + nsName);
mySource.Append(""r"nModule " + ModuleName);
mySource.Append(""r"n");
mySource.Append(this.strScriptText);
mySource.Append(""r"nEnd Module");
mySource.Append(""r"nEnd Namespace");
string strRuntimeSource = mySource.ToString();
更多精彩
赞助商链接