Применение атрибутов взаимодействия

Пространство имен System.Runtime.InteropServices предоставляет три категории атрибутов, связанных с взаимодействием: атрибуты, применяемые во время разработки, атрибуты, применяемые средствами COM-взаимодействия и интерфейсами API в процессе преобразования, и атрибуты, применяемые разработчиком или COM-взаимодействием.

Если разработчик незнаком с задачей применения атрибутов к управляемому коду, см. раздел Расширение метаданных с помощью атрибутов. Как и другие настраиваемые атрибуты, атрибуты взаимодействия можно применять к типам, методам, свойствам, параметрам, полям и прочим членам.

Атрибуты времени разработки

Настроить результат процесса преобразования, выполняемого средствами COM-взаимодействия и API-интерфейсами, можно с помощью атрибутов времени разработки. В следующей таблице описываются атрибуты, применимые к управляемому исходному коду. При необходимости атрибуты, описанные в этой таблице, могут применяться также средствами COM-взаимодействия.

Атрибут

Описание

AutomationProxyAttribute

Определяет, следует ли маршалировать типа с помощью автоматического модуля или с помощью настраиваемого прокси-сервера и заглушки.

ClassInterfaceAttribute

Управляет типом интерфейса, создаваемого для класса.

CoClassAttribute

Определяет значение CLSID исходного компонентного класса, импортируемого из библиотеки типов.

Этот атрибут обычно применяется средствами COM-взаимодействия.

ComImportAttribute

Указывает, что определение компонентного класса или интерфейса было импортировано из библиотеки COM-типов. Среда выполнения использует этот флаг, чтобы определить способ активации и маршалинга типа. Этот атрибут запрещает экспорт типа обратно в библиотеку типов.

Этот атрибут обычно применяется средствами COM-взаимодействия.

ComRegisterFunctionAttribute

Указывает, что при регистрации сборки для использования из COM должен вызываться метод. Это позволяет в процессе регистрации выполнять код, написанный разработчиком.

ComSourceInterfacesAttribute

Задает интерфейсы, которые являются источниками событий для данного класса.

Этот атрибут также может применяться средствами COM-взаимодействия.

ComUnregisterFunctionAttribute

Указывает, что при отмене регистрации сборки для работы с COM должен вызываться метод. Это позволяет в процессе отмены регистрации выполнять код, написанный разработчиком.

ComVisibleAttribute

Если значение атрибута равно false, отображает невидимые для COM типы. Этот атрибут может применяться к отдельному типу или ко всей сборке, чтобы управлять видимостью для COM. По умолчанию все управляемые открытые типы видимы. Чтобы сделать их видимыми, применять данный атрибут не требуется.

DispIdAttribute

Задает идентификатор диспетчера COM (DISPID) для метода или поля. Атрибут, содержащий идентификатор DISPID для описываемого метода, поля или свойства.

Этот атрибут также может применяться средствами COM-взаимодействия.

FieldOffsetAttribute

Задает физическое расположение каждого поля в пределах класса при использовании с StructLayoutAttribute, если для LayoutKind установлено значение Explicit.

GuidAttribute

Задает глобальный идентификатор (GUID) класса, интерфейса или всей библиотеки типов. Строка, передаваемая атрибуту, должна представлять собой формат, являющийся допустимым аргументом конструктора для типа System.Guid.

Этот атрибут также может применяться средствами COM-взаимодействия.

IDispatchImpAttribute

Указывает, какая из реализаций интерфейса IDispatch используется средой CLR при предоставлении COM сдвоенных интерфейсов и диспетчерских интерфейсов.

InAttribute

Указывает, что должен быть выполнен маршалинг данных в вызывающий объект. Может использоваться, чтобы задать атрибуты для параметров.

InterfaceTypeAttribute

Указывает, как управляемый интерфейс предоставляется COM-клиентам (сдвоенный, производный от IUnknown или только IDispatch).

Этот атрибут также может применяться средствами COM-взаимодействия.

LCIDConversionAttribute

Указывает, что для неуправляемой сигнатуры метода требуется параметр LCID.

Этот атрибут также может применяться средствами COM-взаимодействия.

MarshalAsAttribute

Указывает, как должен быть организован маршалинг параметров или данных в полях между управляемым и неуправляемым программным кодом. Этот атрибут всегда необязателен, так как для каждого типа данных существует режим маршалинга по умолчанию.

Этот атрибут также может применяться средствами COM-взаимодействия.

OptionalAttribute

Указывает, что данный параметр необязателен.

Этот атрибут также может применяться средствами COM-взаимодействия.

OutAttribute

Указывает, что должен быть выполнен маршалинг параметров или данных полей из вызываемого объекта обратно в вызывающий.

PreserveSigAttribute

Подавляет преобразование определенного в сигнатуре возвращаемого значения HRESULT или retval, обычно происходящее при вызовах взаимодействия. Этот атрибут влияет на маршалинг и экспорт библиотек типов.

Этот атрибут также может применяться средствами COM-взаимодействия.

ProgIdAttribute

Задает идентификатор ProgID класса .NET Framework. Может использоваться в качестве атрибута классов.

StructLayoutAttribute

Управляет физической компоновкой полей класса.

Этот атрибут также может применяться средствами COM-взаимодействия.

Атрибуты средств преобразования

В следующей таблице описываются атрибуты, применяемые средствами COM-взаимодействия в ходе преобразования. Во время разработки эти атрибуты не применяются.

Атрибут

Описание

ComAliasNameAttribute

Показывает COM-псевдонимы для типа параметра или поля. Может использоваться в качестве атрибута параметров, полей или возвращаемых значений.

ComConversionLossAttribute

Указывает, что сведения о классе или интерфейсе были утеряны при импорте из библиотеки типов в сборку.

ComEventInterfaceAttribute

Определяет исходный интерфейс и класс, реализующий методы интерфейса события.

ImportedFromTypeLibAttribute

Показывает, что сборка была первоначально импортирована из библиотеки COM-типов. Этот атрибут содержит определение исходной библиотеки типов.

TypeLibFuncAttribute

Содержит флаги FUNCFLAGS, которые были первоначально импортированы для данной функции из библиотеки COM-типов.

TypeLibTypeAttribute

Содержит флаги TYPEFLAGS, ранее импортированные для данного типа из библиотеки COM-типов.

TypeLibVarAttribute

Содержит флаги VARFLAGS, которые были первоначально импортированы для данной переменной из библиотеки COM-типов.

См. также

Ссылки

System.Runtime.InteropServices

Основные понятия

Предоставление COM-клиентам доступа к компонентам .NET Framework

Расширение метаданных с помощью атрибутов

Уточнение типов .NET для взаимодействия

Упаковка сборки для модели COM