Пошаговое руководство. Использование возможностей режима /clr:pure
В этом пошаговом руководстве демонстрируется использование отражения для приложения в чистом коде MSIL. Решение Scribble для Windows Forms дополнено несколькими собственными классами, содержащими статические данные, а также предоставляющими элементы управления Windows Forms, которые должны быть доступны из конструктора Windows Forms. Построение образца с использованием параметра /clr:pure позволяет изучить некоторые потенциальные проблемы, связанные с таким скриптом. Дополнительные сведения см. в разделе Практическое руководство. Миграция в /clr:pure (C++/CLI).
Обязательные компоненты
Образец ScribbleDotNET: расширение образца Scribble функциями CLR
Построение и запуск этого примера приложения
Загрузите образец ScribbleDotNET.
Откройте файл решения Scribble.sln в среде разработки Visual Studio.
Постройте решение, используя конфигурацию CLR-Pure Debug или CLR-Pure Release.
Откройте компонент StringDialog.h в режиме конструктора.
Откроется окно конструктора, содержащее экземпляр элемента управления ScribbleCustomControl.
Технологии
Новый синтаксис C++ для .NET
Отражение
marshal_as<T> для доступа к собственным типам из управляемых классов.
Этот образец создает неуправляемый класс и упаковывает его в класс управляемого элемента управления. Когда приложение компилируется в чистый код MSIL, конструктор Windows Forms в Visual Studio может выполнить отражение результирующего EXE-файла и загрузить управляемый элемент управления для использования в конструкторе Windows Forms. Такое возможно только при условии, что текущая конфигурация предусматривает создание приложения в чистом коде MSIL, а не в неуправляемом или смешанном режиме.
В элементе управления создается экземпляр собственного класса. В качестве информации требуется строка собственного типа. С помощью функции marshal_as<T> данные приводятся к управляемому типу, который можно использовать в приложении, поддерживающем CLR. Дополнительные сведения о библиотеке маршалинга см. в разделе Overview of Marshaling in C++.
См. также
Основные понятия
Language Features for Targeting the CLR