연습: /clr:pure 기능 사용
업데이트: 2007년 11월
이 연습에서는 순수 MSIL 응용 프로그램에서 리플렉션을 사용하는 방법을 보여 줍니다. Windows Forms 디자이너에서 사용할 수 있어야 하는 노출 Windows Forms 컨트롤을 비롯하여 정적 데이터를 포함하는 일부 네이티브 클래스를 포함하도록 Windows Forms Scribble 솔루션을 확장합니다. 샘플을 빌드할 때 /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 Forms 디자이너에서는 결과 EXE 파일을 리플렉션하고, Windows Forms 디자이너에서 사용할 수 있도록 관리되는 컨트롤을 로드합니다. 현재 구성이 순수 MSIL 응용 프로그램을 만들기 위한 것이고 비관리 또는 혼합 모드가 아닌 경우에만 이러한 동작이 가능합니다.
컨트롤 내에서 네이티브 클래스의 인스턴스를 인스턴스화합니다. 필요한 정보는 네이티브 문자열입니다. marshal_as<T>를 사용하여 데이터를 CLR 사용 응용 프로그램에서 사용할 수 있는 관리되는 데이터 형식으로 변환합니다. 마샬링 라이브러리에 대한 자세한 내용은 Overview of Marshaling in C++를 참조하십시오.