共用方式為


逐步解說:使用 /clr:pure 功能

更新:2007 年 11 月

這個逐步解說會示範在純 MSIL 應用程式中使用反映 (Reflection)。Windows Form Scribble 方案將會展開以包含具有靜態資料的某些原生類別,同時公開必須能夠從 Windows Form 設計工具使用的 Windows Form 控制項。使用 /clr:pure 選項來建置範例,說明了這個案例中的潛在問題。如需詳細資訊,請參閱 HOW TO:移轉至 /clr:pure

必要條件

ScribbleDotNET 範例:利用 CLR 功能延伸 Scribble 的功能

若要建置 (執行) 這個範例應用程式

  1. 下載 ScribbleDotNET 範例。

  2. 在 Visual Studio 開發環境裡開啟 Scribble.sln 方案檔。

  3. 使用 "CLR-Pure Debug" 或 "CLR-Pure Release" 組態來建置方案。

  4. 在設計模式中開啟 StringDialog.h 元件

  5. 出現的設計視窗會包含 "ScribbleCustomControl" 的執行個體。

技術

  • .NET 的新 C++ 語法

  • 反映

  • 用來從 Managed 類別存取原生型別的 marshal_as<T>。

這個範例會建立 Unmanaged 類別,並會將它包裝在 Managed 控制項類別中。在編譯入純 MSIL 應用程式時,Visual Studio Windows Form 設計工具能夠反映產生的 EXE 檔,並載入 Managed 控制項,以便供在 Windows Form 設計工具中使用。只有當目前的組態是要建立純 MSIL 應用程式,而非 Unmanaged 或混合模式時,才可能發生這種行為。

在控制項內,我們會具現化原生類別的執行個體。我們所需要的資訊是一個原生字串。我們會使用 marshal_as<T> 將資料轉換成 Managed 資料型別,可在啟用 CLR 的應用程式中使用。如需封送處理程式庫的詳細資訊,請參閱 Overview of Marshaling in C++

請參閱

概念

Language Features for Targeting the CLR

其他資源

Visual C++ 2008 的逐步解說