發出動態方法和組件
本節描述 System.Reflection.Emit 命名空間中的一組 Managed 型別,它可讓編譯器或工具在執行階段發出中繼資料和 Microsoft Intermediate Language (MSIL),並在磁碟上選擇性地產生可移植執行檔 (PE)。 指令碼引擎和編譯器是這命名空間的主要使用者。 在本節中,System.Reflection.Emit 命名空間提供的功能都稱為反映 (Reflection) 發出。
反映發出提供下列功能:
使用 DynamicMethod 類別在執行階段定義輕量型全域方法,並使用委派來加以執行。
在執行階段定義組件,然後執行這些組件及 (或) 將它們儲存至磁碟。
在執行階段定義組件、執行這些組件然後卸除它們,並允許記憶體回收重新取回它們的資源。
在執行階段定義新組件中的模組,然後執行這些模組及 (或) 將它們儲存至磁碟。
在執行階段定義模組中的型別、建立這些型別的執行個體,以及叫用它們的方法。
定義已定義模組的符號資訊,以供類似偵錯工具和程式碼分析工具 (Profiler) 的工具所使用。
除了 System.Reflection.Emit 命名空間中的 Managed 型別之外,還有一些 Unmanaged 中繼資料介面會在 中繼資料介面 參考文件中描述。 Managed 反映發出提供了較強的語意錯誤檢查,以及比 Unmanaged 中繼資料介面較高階的中繼資料抽象。
將中繼資料和 MSIL 一起使用的另一項有用的資源是 Common Language Infrastructure (CLI) 文件,特別是<Partition II: Metadata Definition and Semantics>和<Partition III: CIL Instruction Set>。 您可以從 MSDN (英文) 和 Ecma 網站 (英文) 取得這份文件。
在本節中
反映發出抽象
列出及描述您可用來定義組件和型別、方法和方法參數、事件、建構函式、屬性等項目的反映發出類別。動態型別產生的可收集組件
說明動態組件的建立與使用,這些組件在本身包含的型別都無法由執行中的程式碼取得時,可以卸除並由記憶體回收重新取回。反映發出動態方法案例
描述輕量型動態方法的定義和用法。反映發出動態組件案例
描述核心反映發出案例,亦即發出動態組件中所定義的動態模組。反映發出應用程式案例
描述反映發出所支援的應用程式案例,包括在 Web 瀏覽器中執行指令碼、在 ASP.NET 網頁中執行指令碼,以及編譯規則運算式。反映發出中的安全性問題
說明關於使用反映發出來建立動態組件的安全性方面的問題。使用反映發出
說明您可利用反映發出來執行的基本工作,以及產生輕量型動態方法及發出一般型別和方法的 HOW TO 主題。更多有關反映發出的資訊
說明和反映發出相關的其他文件。
參考
OpCodes
為您可用來建置方法主體的 MSIL 指令碼編目。System.Reflection.Emit
包含用來發出動態方法、組件和型別的 Managed 類別。System.Reflection
包含用來探索中繼資料和 Managed 程式碼的 Managed 類別。
相關章節
反映
說明如何探索中繼資料和 Managed 程式碼。Common Language Runtime 中的組件
提供 .NET Framework 中組件的概觀。