Применение атрибутов взаимодействия
Пространство имен System.Runtime.InteropServices предоставляет три категории атрибутов, связанных с взаимодействием: атрибуты, применяемые во время разработки, атрибуты, применяемые средствами COM-взаимодействия и интерфейсами API в процессе преобразования, и атрибуты, применяемые разработчиком или COM-взаимодействием.
Если разработчик незнаком с задачей применения атрибутов к управляемому коду, см. раздел Расширение метаданных с помощью атрибутов. Как и другие настраиваемые атрибуты, атрибуты взаимодействия можно применять к типам, методам, свойствам, параметрам, полям и прочим членам.
Атрибуты времени разработки
Настроить результат процесса преобразования, выполняемого средствами COM-взаимодействия и API-интерфейсами, можно с помощью атрибутов времени разработки. В следующей таблице описываются атрибуты, применимые к управляемому исходному коду. При необходимости атрибуты, описанные в этой таблице, могут применяться также средствами COM-взаимодействия.
Атрибут |
Описание |
---|---|
Определяет, следует ли маршалировать типа с помощью автоматического модуля или с помощью настраиваемого прокси-сервера и заглушки. |
|
Управляет типом интерфейса, создаваемого для класса. |
|
Определяет значение CLSID исходного компонентного класса, импортируемого из библиотеки типов. Этот атрибут обычно применяется средствами COM-взаимодействия. |
|
Указывает, что определение компонентного класса или интерфейса было импортировано из библиотеки COM-типов. Среда выполнения использует этот флаг, чтобы определить способ активации и маршалинга типа. Этот атрибут запрещает экспорт типа обратно в библиотеку типов. Этот атрибут обычно применяется средствами COM-взаимодействия. |
|
Указывает, что при регистрации сборки для использования из COM должен вызываться метод. Это позволяет в процессе регистрации выполнять код, написанный разработчиком. |
|
Задает интерфейсы, которые являются источниками событий для данного класса. Этот атрибут также может применяться средствами COM-взаимодействия. |
|
Указывает, что при отмене регистрации сборки для работы с COM должен вызываться метод. Это позволяет в процессе отмены регистрации выполнять код, написанный разработчиком. |
|
Если значение атрибута равно false, отображает невидимые для COM типы. Этот атрибут может применяться к отдельному типу или ко всей сборке, чтобы управлять видимостью для COM. По умолчанию все управляемые открытые типы видимы. Чтобы сделать их видимыми, применять данный атрибут не требуется. |
|
Задает идентификатор диспетчера COM (DISPID) для метода или поля. Атрибут, содержащий идентификатор DISPID для описываемого метода, поля или свойства. Этот атрибут также может применяться средствами COM-взаимодействия. |
|
Задает физическое расположение каждого поля в пределах класса при использовании с StructLayoutAttribute, если для LayoutKind установлено значение Explicit. |
|
Задает глобальный идентификатор (GUID) класса, интерфейса или всей библиотеки типов. Строка, передаваемая атрибуту, должна представлять собой формат, являющийся допустимым аргументом конструктора для типа System.Guid. Этот атрибут также может применяться средствами COM-взаимодействия. |
|
Указывает, какая из реализаций интерфейса IDispatch используется средой CLR при предоставлении COM сдвоенных интерфейсов и диспетчерских интерфейсов. |
|
Указывает, что должен быть выполнен маршалинг данных в вызывающий объект. Может использоваться, чтобы задать атрибуты для параметров. |
|
Указывает, как управляемый интерфейс предоставляется COM-клиентам (сдвоенный, производный от IUnknown или только IDispatch). Этот атрибут также может применяться средствами COM-взаимодействия. |
|
Указывает, что для неуправляемой сигнатуры метода требуется параметр LCID. Этот атрибут также может применяться средствами COM-взаимодействия. |
|
Указывает, как должен быть организован маршалинг параметров или данных в полях между управляемым и неуправляемым программным кодом. Этот атрибут всегда необязателен, так как для каждого типа данных существует режим маршалинга по умолчанию. Этот атрибут также может применяться средствами COM-взаимодействия. |
|
Указывает, что данный параметр необязателен. Этот атрибут также может применяться средствами COM-взаимодействия. |
|
Указывает, что должен быть выполнен маршалинг параметров или данных полей из вызываемого объекта обратно в вызывающий. |
|
Подавляет преобразование определенного в сигнатуре возвращаемого значения HRESULT или retval, обычно происходящее при вызовах взаимодействия. Этот атрибут влияет на маршалинг и экспорт библиотек типов. Этот атрибут также может применяться средствами COM-взаимодействия. |
|
Задает идентификатор ProgID класса .NET Framework. Может использоваться в качестве атрибута классов. |
|
Управляет физической компоновкой полей класса. Этот атрибут также может применяться средствами COM-взаимодействия. |
Атрибуты средств преобразования
В следующей таблице описываются атрибуты, применяемые средствами COM-взаимодействия в ходе преобразования. Во время разработки эти атрибуты не применяются.
Атрибут |
Описание |
---|---|
Показывает COM-псевдонимы для типа параметра или поля. Может использоваться в качестве атрибута параметров, полей или возвращаемых значений. |
|
Указывает, что сведения о классе или интерфейсе были утеряны при импорте из библиотеки типов в сборку. |
|
Определяет исходный интерфейс и класс, реализующий методы интерфейса события. |
|
Показывает, что сборка была первоначально импортирована из библиотеки COM-типов. Этот атрибут содержит определение исходной библиотеки типов. |
|
Содержит флаги FUNCFLAGS, которые были первоначально импортированы для данной функции из библиотеки COM-типов. |
|
Содержит флаги TYPEFLAGS, ранее импортированные для данного типа из библиотеки COM-типов. |
|
Содержит флаги VARFLAGS, которые были первоначально импортированы для данной переменной из библиотеки COM-типов. |
См. также
Ссылки
System.Runtime.InteropServices
Основные понятия
Предоставление COM-клиентам доступа к компонентам .NET Framework
Расширение метаданных с помощью атрибутов