チュートリアル : /clr:pure 機能の使用
更新 : 2007 年 11 月
このチュートリアルでは、純粋 MSIL アプリケーションでリフレクションを使用する方法を示します。Windows フォーム Scribble ソリューションは、Windows フォーム デザイナで使用できる必要のある Windows フォーム コントロールを公開するだけでなく、静的データを格納するネイティブ クラスを含めるように拡張されています。/clr:pure オプションを使用してサンプルをビルドすると、このシナリオで発生する可能性のある問題が解決されます。詳細については、「方法 : /clr:pure に移行する」を参照してください。
前提条件
ScribbleDotNET のサンプル : CLR 機能を使用した Scribble の拡張
このサンプル アプリケーションをビルドまたは実行するには
ScribbleDotNET サンプルをダウンロードします。
Visual Studio 開発環境で、Scribble.sln ソリューション ファイルを開きます。
"CLR-Pure Debug" 構成または "CLR-Pure Release" 構成のいずれかを使用してソリューションをビルドします。
StringDialog.h コンポーネントをデザイン モードで開きます。
表示されるデザイン ウィンドウには、"ScribbleCustomControl" のインスタンスが含まれます。
テクノロジ
.NET 用の新しい C++ 構文
リフレクション
マネージ クラスからネイティブな型にアクセスするための marshal_as<T>。
このサンプルでは、アンマネージ クラスを作成して、マネージ コントロール クラスにラップします。純粋 MSIL アプリケーションにコンパイルすると、Visual Studio Windows フォーム デザイナは、結果の EXE ファイルに反映して、Windows フォーム デザイナ用のマネージ コントロールを読み込むことができます。この動作が行われるのは、現在の構成が、純粋 MSIL アプリケーションの作成を目的とし、アンマネージ モードと混合モードのどちらでもない場合だけです。
コントロール内では、ネイティブ クラスのインスタンスをインスタンス化します。必要な情報は、ネイティブな文字列です。marshal_as<T> を使用して、CLR 対応のアプリケーションで使用できるマネージ データ型にデータを変換します。マーシャリング ライブラリの詳細については、「C++ におけるマーシャリングの概要」を参照してください。