封裝目標
簡化動態編譯調用、相同程式碼單次編譯、程式碼變更自動重編、參考組件自動/手動載入、支援偵錯。
核心類別 `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)`:檔案編譯並建立實例。
架構圖示

設計亮點
- **快取機制**:相同程式碼(雜湊比對)僅編譯一次,後續直接建立實例。
- **自動重編**:偵測程式碼字串變更自動觸發重編。
- **智慧參考解析**:減少手動 `References.Add` 呼叫。
- **AppDomain 隔離**:內部管理子域建立/卸載,調用者無感知。