Зміст:
Визначення - Що означають атрибути спрямованості?
Атрибути спрямованості в C # - це теги, які використовуються для визначення параметрів (-ів) об'єктного методу з інформацією, що стосується спрямованого потоку даних між викликом і абонентом.
Атрибути спрямованості керують маршируванням - де об'єкт готується до передачі через межі програми чи межі процесу - напряму та повернення значень параметру методу. Атрибути спрямованості застосовуються для зміни маршалінгу виконання під час передачі керованого коду, який виконується загальною мовою виконання (CLR), і некерованого коду, який виконується поза контролем CLR.
Техопедія пояснює атрибути спрямованості
InAttribute та OutAttribute - це два атрибути спрямованості C #, які використовуються для відображення атрибутів мови визначення інтерфейсу (COM) інтерфейсу (ID) інтерфейсу компонентної моделі (COM). Карти InAttribute на, а OutAttribute на -. Повернене значення підпису керованого методу відображається в бібліотеці типів. Важливо вказати правильний атрибут спрямованості до параметрів методу, щоб бібліотека тип експорту коректно встановлювала біти вводу / виводу.
Застосовуючи InAttribute та OutAttribute у масивах та відформатованих типах, які не блокуються (які не мають загального керованого та некерованого представлення пам’яті), абонент бачить зміни виклику. Атрибути спрямованості, застосовані до цих типів, зменшують непотрібні копії під час маршалінгу.
У C # InAttribute та OutAttribute використовуються у трьох формах з двома ключовими словами під час спілкування абонента та виклику, як описано нижче:
- "назовні" - Implies
- "ref" - імпліє,
- (Не вказано) - (за замовчуванням)
Ключові слова out та ref використовуються для типів значень та типів, що серіалізуються. Ключове слово ref означає, що параметр розміщено в обох напрямках, а out означає передачу даних callee. Якщо відхилення або відхилення не використовуються, це означає, що дані передаються на запитувач.
Наприклад, клієнтська програма .NET надсилає вхідне значення методу компонента COM, який обчислює результат вхідного значення та повертає результат клієнту. Атрибути спрямованості можуть бути застосовані до параметрів методу, що обслуговує запит, вказавши необхідний тип маршалінгу для вхідного значення та результату.
Атрибути спрямованості мають такі характеристики:
- Необов’язково та застосовується до параметрів методу під час проектування
- Підтримується лише для взаємодії з COM та виклику платформи
- InAttribute не може бути застосований до параметра із вихідним ключовим словом
Маршалник interop CLR надає послугу маршалінгу під час виконання шляхом обробки аргументів виклику методу та повернення значень між керованою та некерованою пам'яттю. Якщо атрибути спрямованості не визначені, то маршалер визначає спрямований потік на основі типу параметра та модифікатора (якщо він є). Маршал працює наступним чином:
- Він не перезаписує дані, передані як параметр "В" з некерованого коду. Таким чином, можуть передаватися лише дані лише для читання, такі як паралельно отримані дані.
- Під час передачі об'єктів - таких як базові або двійкові рядки (BSTR) - із встановленим розподілом пам'яті, належна послідовність розподілу / розсилки дотримується відповідно до параметрів вводу / виводу.
