逐步解說:使用 /clr:pure 功能
更新:2007 年 11 月
這個逐步解說會示範在純 MSIL 應用程式中使用反映 (Reflection)。Windows Form Scribble 方案將會展開以包含具有靜態資料的某些原生類別,同時公開必須能夠從 Windows Form 設計工具使用的 Windows Form 控制項。使用 /clr:pure 選項來建置範例,說明了這個案例中的潛在問題。如需詳細資訊,請參閱 HOW TO:移轉至 /clr:pure。
必要條件
ScribbleDotNET 範例:利用 CLR 功能延伸 Scribble 的功能
若要建置 (執行) 這個範例應用程式
下載 ScribbleDotNET 範例。
在 Visual Studio 開發環境裡開啟 Scribble.sln 方案檔。
使用 "CLR-Pure Debug" 或 "CLR-Pure Release" 組態來建置方案。
在設計模式中開啟 StringDialog.h 元件
出現的設計視窗會包含 "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