InterfaceTypeAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает, является ли управляемый интерфейс двойным, только диспетчером или IUnknown -only при использовании COM.
public ref class InterfaceTypeAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)]
public sealed class InterfaceTypeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class InterfaceTypeAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)>]
type InterfaceTypeAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type InterfaceTypeAttribute = class
inherit Attribute
Public NotInheritable Class InterfaceTypeAttribute
Inherits Attribute
- Наследование
- Атрибуты
Примеры
В следующем примере показано, как управлять тем, как InterfaceTypeAttribute интерфейс предоставляется com.
using namespace System::Runtime::InteropServices;
//Interface is exposed to COM as dual.
interface class IMyInterface1{};
//Insert code here.
//Interface is exposed to COM as IDispatch.
[InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIDispatch)]
interface class IMyInterface2{};
//Insert code here.
using System.Runtime.InteropServices;
//Interface is exposed to COM as dual.
interface IMyInterface1
{
//Insert code here.
}
//Interface is exposed to COM as IDispatch.
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
interface IMyInterface2
{
//Insert code here.
}
Imports System.Runtime.InteropServices
'Interface is exposed to COM as dual.
Interface IMyInterface1
'Insert code here.
End Interface
'Interface is exposed to COM as IDispatch.
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)> _
Interface IMyInterface2
'Insert code here.
End Interface
Комментарии
Этот атрибут можно применить к интерфейсам.
По умолчанию Tlbexp.exe (экспортер библиотек типов) предоставляет управляемый интерфейс COM в виде двойного интерфейса, что обеспечивает гибкость поздней привязки или производительность ранней привязки. Перечисление ComInterfaceType позволяет переопределить поведение по умолчанию и указать только позднюю привязку или только раннюю привязку. Например, можно применить InterfaceType (ComInterfaceType.InterfaceIsIDispatch) к интерфейсу для создания метаданных, чтобы ограничить вызывающих абонентов только поздней привязкой. Хотя интерфейсы, производные от IDispatch интерфейса, часто являются двойными, InterfaceIsIDispatch член перечисления разрешает только поздние вызовы к методам интерфейса. Этот атрибут не влияет на управляемое представление интерфейса. Дополнительные сведения о том, как интерфейсы предоставляются com, см. в разделе "Экспортированное преобразование типов").
Tlbimp.exe (импорт библиотек типов) также применяет этот атрибут к импортированным, ненуальным интерфейсам; Он применяет соответствующий член перечисления, чтобы указать, что интерфейс доступен только для отправки или IUnknown -only.
Конструкторы
| Имя | Описание |
|---|---|
| InterfaceTypeAttribute(ComInterfaceType) |
Инициализирует новый экземпляр InterfaceTypeAttribute класса с указанным ComInterfaceType элементом перечисления. |
| InterfaceTypeAttribute(Int16) |
Инициализирует новый экземпляр InterfaceTypeAttribute класса с указанным ComInterfaceType элементом перечисления. |
Свойства
| Имя | Описание |
|---|---|
| TypeId |
При реализации в производном классе получает уникальный идентификатор для этого Attribute. (Унаследовано от Attribute) |
| Value |
ComInterfaceType Возвращает значение, описывающее, как интерфейс должен быть предоставлен COM. |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от Attribute) |
| GetHashCode() |
Возвращает хэш-код для этого экземпляра. (Унаследовано от Attribute) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IsDefaultAttribute() |
При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса. (Унаследовано от Attribute) |
| Match(Object) |
При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от Attribute) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса. (Унаследовано от Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к свойствам и методам, предоставляемым объектом. (Унаследовано от Attribute) |