程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第十四講 基於動態編譯的VB.NET腳本引擎(上)(4)

C#發現之旅第十四講 基於動態編譯的VB.NET腳本引擎(上)(4)

編輯:關於C語言

如上所述,借助於StandardModuleAttribute特性和編譯器命令行 參數imports,筆者就可以實現VB.Net的全局對象和全局函數了。

根據上述說明,筆 者設計如下的參與動態編譯的VB.Net腳本代碼的結構

Option Strict Off
Imports System
Imports Microsoft.VisualBasic
Namespace  NameSpaceXVBAScriptEngIEn
    Module mdlXVBAScriptEngine

         sub 腳本方法1()
            'VB.Net代碼
         end sub

        sub 腳本方法2()
             'VB.Net代碼
        end sub

    End  Module
End Namespace

其中斜體部分就是用戶提供的原始腳本代碼, 而開頭和結尾部分是腳本引擎自動添加的,這樣能減少腳本引擎的使用難度。

在腳本 引擎自動添加的代碼中使用了Imports語句引入的名稱空間,默認添加了System和 Microsoft.VisualBasic兩個名稱空間,為了方便使用,可以讓用戶添加其他的名稱空間,比 如腳本代碼中大量使用了System.Drawing名稱空間,則可以使用Imports語句導入 System.Drawing名稱空間來減少腳本代碼量。

軟件開發

筆者新建一個 XVBAEngine類型,該類型實現了腳本引擎的功能。腳本引擎包含了參數控制屬性,代碼生成 器,動態編譯,分析和調用臨時程序集等幾個子功能。

參數控制屬性

筆者為 腳本引擎類型定義了幾個屬性用於保存腳本引擎運行所必備的基礎數據。這些屬性中最重要 的屬性就是用戶設置的原始腳本代碼文本。定義該屬性的代碼如下

///  <summary>
/// 腳本代碼改變標記
/// </summary>
private bool bolScriptModifIEd = true;

/// <summary>
/// 原始的VBA腳本文本
/// </summary>
private string  strScriptText = null;
/// <summary>
/// 原始的VBA腳本文本
/// </summary>
public string ScriptText
{
     get
    {
        return strScriptText;
    }
    set
    {
        if (strScriptText != value)
        {
            bolScriptModifIEd =  true;
            strScriptText = value;
         }
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved