Поделиться через


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
Атрибуты

Примеры

В следующем примере показано, как управлять тем, как 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)

Применяется к

См. также раздел