程序使用该集合来添加对脚本可能需要的某些公共库的引用。本示例加载对 system.dll、mscorlib.dll 以及 system.drawing.dll 的引用。然后它加载对定义 Picture 和 Segment 类的程序集的引用。注意代码如何使用 [Assembly].GetAssembly 以获取程序集位置,而不是进行硬编码。
然后,程序生成一个描述全局对象的 IVsaGlobalItem 对象。程序将此对象命名为 ThePicture,并表明它来自于 ScriptDrawObjects.Picture 类。VSA 使用该类的信息来确定要使用该对象的脚本应当可以使用哪些公共属性和方法。然后,程序产生一个表示脚本代码的对象。
接下来,代码添加一个名为 MyPicture 的事件源,因此,脚本可以捕获“MyPicture”对象的事件。代码通知 VSA 该对象的类型为 ScriptDrawObjects.Picture。VSA 使用此信息来确定该对象可能引发的事件。
然后,代码调用引擎的 Compile 方法来编译脚本。如果编译失败,VSA 就调用 OnCompilerError 和站点类通知用户有关的错误。在这种情况下,引擎的 IsCompiled 属性仍然为 False。子例程检查该值,并在编译失败时退出。
现在,程序调用引擎的 Run 方法启动引擎。虽然这不会运行任何脚本代码,但是我们离目标又近了一步。
程序获得一个描述 Script 模块的 Type。这就是引擎根命名空间中的 Script 模块。它调用 Type 的 GetMethod 函数获取有关在脚本中定义的 Main 子例程的信息,并调用该子例程。.
关闭引擎就完成了代码。
与使用脚本控件相比,这看起来更为复杂,不是吗?
文章来源于领测软件测试网 https://www.ltesting.net/