Exemplarische Vorgehensweise: Verwenden von /clr:pure-Features

Aktualisiert: November 2007

In dieser exemplarische Vorgehensweise wird die Verwendung der Reflektion in reinen MSIL-Anwendungen veranschaulicht. Die Windows Forms-Projektmappe Scribble ist um einige systemeigene Klassen erweitert worden, die statische Daten enthalten und Windows Forms-Steuerelemente verfügbar machen, die im Windows Forms-Designer verwendbar sein müssen. Das Erstellen des Beispiels mit der /clr:pure-Option geht auf potenzielle Probleme bei diesem Szenario ein. Weitere Informationen finden Sie unter Gewusst wie: Migrieren auf /clr:pure.

Vorbereitungsmaßnahmen

ScribbleDotNET-Beispiel: Erweitern der Scribble-Anwendung um CLR-Features

So erstellen Sie diese Beispielanwendung und führen sie aus

  1. Laden Sie das Beispiel ScribbleDotNET herunter.

  2. Öffnen Sie die Projektmappendatei Scribble.sln in der Visual Studio-Entwicklungsumgebung.

  3. Erstellen Sie die Projektmappe entweder mit der CLR-Pure-Debugkonfiguration oder der CLR-Pure-Releasekonfiguration.

  4. Öffnen Sie die StringDialog.h-Komponente im Entwurfsmodus.

  5. Das angezeigte Entwurfsfenster enthält eine Instanz von "ScribbleCustomControl".

Technologien

  • Neue C++-Syntax für .NET

  • Reflektion

  • marshal_as<T> für Zugriff aus verwalteten Klassen auf systemeigene Typen

In diesem Beispiel wird eine nicht verwaltete Klasse erstellt und in eine verwaltete Steuerelementklasse eingebunden. Nach der Kompilierung in eine reine MSIL-Anwendung kann der Windows Forms-Designer von Visual Studio über die sich ergebende EXE-Datei reflektieren und das verwaltete Steuerelement zur Verwendung im Windows Forms-Designer laden. Dies ist nur möglich, wenn die aktuelle Konfiguration eine reine MSIL-Anwendung erstellt, nicht aber im nicht verwalteten oder gemischten Modus.

Innerhalb des Steuerelements wird eine Instanz einer systemeigenen Klasse instanziiert. Die Information, die benötigt wird, ist eine systemeigene Zeichenfolge. Mit marshal_as<T> werden die Daten in einen verwalteten Datentyp konvertiert, der in einer CLR-aktivierten Anwendung verwendet werden kann. Weitere Informationen über die Marshallingbibliothek finden Sie unter Overview of Marshaling in C++.

Siehe auch

Konzepte

Language Features for Targeting the CLR

Weitere Ressourcen

Exemplarische Vorgehensweisen in Visual C++ 2008