分享方式:


發出動態方法和組件

本節描述命名空間中的 System.Reflection.Emit 一組 Managed 類型,可讓編譯程式或工具在運行時間發出元數據和通用中繼語言 (CIL),並選擇性地在磁碟上產生可攜式可執行檔 (PE) 檔案。 指令碼引擎和編譯器是此命名空間的主要使用者。 在本節中,命名空間所提供的 System.Reflection.Emit 功能稱為 反映發出

反映發出提供下列功能:

  • 使用 DynamicMethod 類別,在執行階段定義輕量型全域方法,並使用委派加以執行。
  • 在執行階段定義組件,然後加以執行,並/或儲存至磁碟。
  • 在執行階段定義組件、加以執行,然後將其卸載,並允許記憶體回收,以回收其資源。
  • 在執行階段定義新組件中的模組,然後加以執行,並/或儲存至磁碟。
  • 在執行階段定義模組中的類型、建立這些類型的執行個體,並叫用其方法。
  • 針對已定義的模組,定義可供工具 (例如偵錯工具和程式碼分析工具) 使用的符號資訊。

除了命名空間中的 System.Reflection.Emit Managed 型別之外,還有元數據介面參考檔中說明 的 Unmanaged 元數據介面 。 相較於 Unmanaged 中繼資料介面,Managed 反映發出提供較強的語意錯誤檢查,以及抽象層級較高的中繼資料。

使用元數據和 CIL 的另一個實用資源是 Common Language Infrastructure (CLI) 檔,特別是「數據分割 II:元數據定義與語意」和「數據分割 III:CIL 指令集」。 您可以在 Ecma 網站上,線上取得這份文件。

參考

OpCodes
編錄可用來建置方法主體的 CIL 指示代碼。

System.Reflection.Emit
包含用來發出動態方法、組件和類型的 Managed 類別。

Type
說明 Type 類別,其代表 Managed 反映和反映發出中的類型,且其為使用這些技術的關鍵。

System.Reflection
包含用來探索中繼資料和 Managed 程式碼的 Managed 類別。