Направленные Атрибуты

Автор: Lewis Jackson
Дата создания: 8 Май 2021
Дата обновления: 1 Июль 2024
Anonim
«Эффективные проекты, реализуемые библиотеками и направленные на повышение доступности...»
Видео: «Эффективные проекты, реализуемые библиотеками и направленные на повышение доступности...»

Содержание

Определение - Что означают Атрибуты Направления?

Атрибуты направления в C # - это теги, используемые для указания параметров объекта метода с информацией, связанной с направленным потоком данных между вызывающей стороной и вызываемой стороной.

Атрибуты направления управляют маршалингом - когда объект подготовлен для передачи через границу приложения или процесса - направления параметров метода и возвращаемых значений. Атрибуты направления применяются для изменения маршалинга во время выполнения при передаче управляемого кода, который выполняется общеязыковой средой выполнения (CLR), и неуправляемого кода, который выполняется вне контроля CLR.


Введение в Microsoft Azure и Microsoft Cloud | Из этого руководства вы узнаете, что такое облачные вычисления и как Microsoft Azure может помочь вам перенести и запустить свой бизнес из облака.

Техопедия объясняет Направленные Атрибуты

InAttribute и OutAttribute - это два атрибута направления C #, используемые для сопоставления с атрибутами языка определения интерфейсов (IDL) Component Object Models (COM). InAttribute сопоставляется, а OutAttribute сопоставляется. Возвращаемое значение сигнатуры управляемого метода отображается в библиотеке типов. Важно указать правильный атрибут направления для параметров метода, чтобы библиотека экспортирующего типа правильно устанавливала биты ввода / вывода.

Применяя InAttribute и OutAttribute в массивах и отформатированных неблизких типах (которые не имеют общего представления управляемой и неуправляемой памяти), вызывающая сторона видит изменения вызываемого абонента. Атрибуты направления, применяемые к этим типам, уменьшают ненужные копии во время маршалинга.

В C # InAttribute и OutAttribute используются в трех формах с двумя ключевыми словами во время связи между вызывающими и вызываемыми абонентами, а именно:


  • "out" - подразумевает
  • "ref" - подразумевает,
  • (Не указано) - (по умолчанию)

Ключевые слова out и ref используются для типов значений и сериализуемых ссылочных типов. Ключевое слово ref подразумевает, что параметр маршалируется в обоих направлениях, а out - передачу данных вызываемого абонента. Когда ref или out не используются, это означает, что данные передаются вызываемому абоненту.

Например, клиентское приложение .NET вводит значение в метод COM-компонента, который вычисляет результат ввода значения и возвращает его клиенту. Атрибуты направления могут применяться к параметрам метода, обслуживающего запрос, путем указания требуемого типа маршалинга для входного значения и результата.

Направленные атрибуты имеют следующие характеристики:

  • Необязательно и применяется к параметрам метода во время разработки
  • Поддерживается только для COM-взаимодействия и вызова платформы
  • InAttribute нельзя применить к параметру с ключевым словом out

Маршалер взаимодействия CLR предоставляет сервис маршалинга во время выполнения, обрабатывая аргументы вызова метода и возвращая значения между управляемой и неуправляемой памятью. Если направленные атрибуты не определены, маршалер определяет направленный поток на основе типа параметра и модификатора (если есть). Маршалер работает следующим образом:


  • Он не перезаписывает данные, передаваемые в качестве параметра «In» из неуправляемого кода. Таким образом, могут передаваться только данные только для чтения, такие как данные, к которым обращаются одновременно.
  • При передаче объектов - таких как базовые или двоичные строки (BSTR) - с установленным выделением памяти, правильная последовательность выделения / освобождения выполняется в соответствии с настройками In / Out.
Это определение было написано в кон C #