Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пространство System.Runtime.InteropServices имен предоставляет три категории атрибутов, связанных с взаимодействием: те, которые применяются вами на этапе разработки, те, которые применяются инструментами и API COM-взаимодействия в процессе преобразования, и те, которые могут быть применены вами или средствами COM-взаимодействия.
Если вы не знакомы с задачей применения атрибутов к управляемому коду, см. раздел "Расширение метаданных с помощью атрибутов". Как и другие пользовательские атрибуты, вы можете применять атрибуты, специфичные для взаимодействия, к типам, методам, свойствам, параметрам, полям и другим элементам.
Атрибуты Design-Time
Результат процесса преобразования, выполняемого средствами взаимодействия COM и API, можно настроить с помощью атрибутов времени разработки. В следующей таблице описаны атрибуты, которые можно применить к управляемому исходному коду. Средства взаимодействия COM могут иногда также применять атрибуты, описанные в этой таблице.
| Свойство | Описание |
|---|---|
| AutomationProxyAttribute | Указывает, следует ли маршалировать тип с использованием маршализатора Automation или использовать пользовательский прокси и заглушку. |
| ClassInterfaceAttribute | Управляет типом интерфейса, созданного для класса. |
| CoClassAttribute | Определяет CLSID исходного coclass, импортированного из библиотеки типов. Средства взаимодействия COM обычно применяют этот атрибут. |
| ComImportAttribute | Указывает, что определение сокласса или интерфейса импортировано из библиотеки типов COM. Среда выполнения использует этот флаг, чтобы узнать, как активировать и обрабатывать тип. Этот атрибут запрещает экспорт типа обратно в библиотеку типов. Средства взаимодействия COM обычно применяют этот атрибут. |
| ComRegisterFunctionAttribute | Указывает на то, что метод должен вызываться при регистрации сборки для использования в COM, чтобы пользовательский код мог быть выполнен в процессе регистрации. |
| ComSourceInterfacesAttribute | Определяет интерфейсы, которые являются источниками событий для класса. Средства взаимодействия COM могут применять этот атрибут. |
| ComUnregisterFunctionAttribute | Указывает, что метод должен вызываться при отмене регистрации сборки из COM, чтобы код, написанный пользователем, выполнялся во время процесса. |
| ComVisibleAttribute | Отрисовывает типы, невидимые для COM, если значение атрибута равно false. Этот атрибут можно применить к отдельному типу или ко всей сборке для управления видимостью COM. По умолчанию все управляемые общедоступные типы отображаются; Атрибут не нужен, чтобы сделать их видимыми. |
| DispIdAttribute | Указывает идентификатор диспетчера COM (DISPID) метода или поля. Этот атрибут содержит DISPID для метода, поля или свойства, которое он описывает. Средства взаимодействия COM могут применять этот атрибут. |
| ComDefaultInterfaceAttribute | Указывает интерфейс по умолчанию для класса COM, реализованного в .NET. Средства взаимодействия COM могут применять этот атрибут. |
| FieldOffsetAttribute | Указывает физическое положение каждого поля в классе при использовании с StructLayoutAttribute, когда LayoutKind установлен в Explicit. |
| GuidAttribute | Задает глобальный уникальный идентификатор (GUID) класса, интерфейса или всей библиотеки типов. Строка, передаваемая атрибуту, должна быть форматом, который является допустимым аргументом конструктора для типа System.Guid. Средства взаимодействия COM могут применять этот атрибут. |
| IDispatchImplAttribute | Указывает, какую реализацию интерфейса IDispatch использует общаяязыковая среда выполнения при работе с двойными интерфейсами и диспинтерфейсами для COM. |
| InAttribute | Указывает, что данные должны маршалироваться в вызывающий объект. Можно использовать для задания параметров. |
| InterfaceTypeAttribute | Управляет тем, как управляемый интерфейс предоставляется клиентам COM (только в вариантах Dual, IUnknown или IDispatch). Средства взаимодействия COM могут применять этот атрибут. |
| LCIDConversionAttribute | Указывает, что неуправляемая сигнатура метода ожидает параметр LCID. Средства взаимодействия COM могут применять этот атрибут. |
| MarshalAsAttribute | Указывает, как следует маршалировать данные в полях или параметрах между управляемым и неуправляемным кодом. Атрибут всегда необязателен, так как каждый тип данных имеет поведение маршаллинга по умолчанию. Средства взаимодействия COM могут применять этот атрибут. |
| OptionalAttribute | Указывает, что параметр является необязательным. Средства взаимодействия COM могут применять этот атрибут. |
| OutAttribute | Указывает, что данные в поле или параметре должны маршалироваться из вызываемого объекта обратно в вызывающий объект. |
| PreserveSigAttribute | Подавляет преобразование подписи HRESULT или retval, которое обычно происходит во время межоперационных вызовов. Атрибут влияет на маршалирование, а также экспорт библиотеки типов. Средства взаимодействия COM могут применять этот атрибут. |
| ProgIdAttribute | Указывает ProgID класса .NET. Можно использовать для атрибутирования классов. |
| StructLayoutAttribute | Управляет физическим макетом полей класса. Средства взаимодействия COM могут применять этот атрибут. |
Атрибуты Conversion-Tool
В следующей таблице описываются атрибуты, применяемые средства взаимодействия COM во время процесса преобразования. Эти атрибуты не применяются во время разработки.
| Свойство | Описание |
|---|---|
| ComAliasNameAttribute | Указывает псевдоним COM для параметра или типа поля. Можно использовать для атрибутов параметров, полей или возвращаемых значений. |
| ComConversionLossAttribute | Указывает, что сведения о классе или интерфейсе были потеряны при импорте из библиотеки типов в сборку. |
| ComEventInterfaceAttribute | Определяет исходный интерфейс и класс, реализующий методы интерфейса события. |
| ImportedFromTypeLibAttribute | Указывает, что сборка была первоначально импортирована из библиотеки типов COM. Этот атрибут содержит определение исходной библиотеки типов. |
| TypeLibFuncAttribute | Содержит FUNCFLAGS , которые первоначально импортировались для этой функции из библиотеки типов COM. |
| TypeLibTypeAttribute | Содержит TYPEFLAGS , которые изначально импортировались для этого типа из библиотеки типов COM. |
| TypeLibVarAttribute | Содержит VARFLAGS , которые изначально импортировались для этой переменной из библиотеки типов COM. |