首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 動態編譯執行調試(一):CSharpProvider 封裝架構與公共 API

     編輯:關於C語言

封裝目標

簡化動態編譯調用、相同程式碼單次編譯、程式碼變更自動重編、參考組件自動/手動載入、支援偵錯。

核心類別 `CSharpProvider` 公共介面

屬性

  • `AssemblyFileName`:動態組件輸出檔名。
  • `CompilerParameters`:編譯參數物件(可自訂輸出路徑、警告等級等)。
  • `References`:參考組件集合。`Add("xxx.dll")` 手動添加;`System.*` 命名空間自動載入;使用者組件嘗試依命名空間推測 DLL 檔名自動載入。
  • `SourceCodeFileEncoding`:檔案編譯時原始碼編碼。

方法

  • `bool Compile(string code)`:字串原始碼編譯。
  • `bool CompileFromFile(string fileName)`:檔案原始碼編譯(支援偵錯)。
  • `object CreateInstance(string code, string typeFullName)`:編譯並建立實例(型別名稱支援介面名自動匹配)。
  • `object CreateInstanceFromFile(string fileName, string typeFullName)`:檔案編譯並建立實例。

架構圖示

CSharpProvider 類別結構

設計亮點

  1. **快取機制**:相同程式碼(雜湊比對)僅編譯一次,後續直接建立實例。
  2. **自動重編**:偵測程式碼字串變更自動觸發重編。
  3. **智慧參考解析**:減少手動 `References.Add` 呼叫。
  4. **AppDomain 隔離**:內部管理子域建立/卸載,調用者無感知。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved